我看到一些我无法理解的行为,并且想知道是否有人能够准确地解释这里发生了什么.这是我目前的代码.
public class MyClass {
ArrayList<String> myList = new ArrayList<String>();
public MyClass() {
populate();
removeData(myList);
}
private void populate() {
myList.add("Some data");
myList.add("Some more data");
myList.add("Even more data");
}
private void removeData(ArrayList<String> list) {
ArrayList<String> temp = new ArrayList<String>();
temp = list;
temp.remove("Some data");
}
}
Run Code Online (Sandbox Code Playgroud)
现在由于某种原因,在我运行此代码后,数据将从ArrayList"myList"中删除.即使我只是从方法"removeData"中的变量中删除数据而不是从字段"myList"中删除数据,为什么会发生这种情况?
我们有两个 AWS 账户。一个用于生产,另一个用于测试。我们需要区分我们正在运行的环境。我们可以看到一个简单的方法是获取帐户名称,一旦我们得到它就会非常简单。但是,我们不知道如何从 AWS 凭证或属性中获取它。有没有人知道如何使用 AWS 凭证获取账户信息?我考虑了账户权限、账户类型等的可能性,但我认为这不应该阻止我们获取账户名?
我的macbook上有一个默认的Datastax enterprise安装.我能够创建我的键空间并设置我的所有应用程序,包括使用solr.
我正在尝试开发一组步骤来为我们的开发群集启用密码身份验证.
到目前为止,我已更新/usr/local/dse/resources/cassandra/conf/cassandra.yaml并更改了以下属性:authenticator:PasswordAuthenticator authorizer:CassandraAuthorizer
我重新启动了节点,可以使用cqlsh登录并查询我的密钥空间:cqlsh -u cassandra -p cassandra
此时,我尝试在"会话"构建器上设置"凭据":主机为:cassandra.host = localhost
authenticator: PasswordAuthenticator
authorizer: CassandraAuthorizer
Run Code Online (Sandbox Code Playgroud)
但是我无法成功连接.所以我添加了一个新用户,并且能够再次通过cqlsh登录,但仍然无法连接Java驱动程序.
cqlsh -u cassandra -p cassandra
Run Code Online (Sandbox Code Playgroud)
我通过gradle为驱动程序使用'com.datastax.cassandra:cassandra-driver-dse:2.1.9'.
我总是得到以下堆栈跟踪,通过调试可以看到用户名和密码设置正确:
Session session = keyspaceToSessionMap.get(keyspace);
if( session == null){
Cluster cluster = Cluster.builder().addContactPoints(hosts)
.withCredentials(username, password)
//.withSSL()
.build();
session = cluster.connect(keyspace);
keyspaceToSessionMap.put(keyspace,session);
}
Run Code Online (Sandbox Code Playgroud)
这似乎应该很简单,但我很难过.
与cassandra驱动程序相关的依赖关系图包含以下内容:
cqlsh -u username -p password
Connected to LocalCluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 2.1.8.689 | DSE 4.7.3 | CQL spec 3.2.0 | Native protocol v3]
Run Code Online (Sandbox Code Playgroud)
我创建了以下测试通过.
Caused by: com.datastax.driver.core.exceptions.AuthenticationException: Authentication error …Run Code Online (Sandbox Code Playgroud) 所需 Jenkins 管道的描述:
我目前的代码是:
try {
timeout(1) {
input message: 'Do you want to release this build?',
parameters: [[$class: 'BooleanParameterDefinition',
defaultValue: false,
description: 'Ticking this box will do a release',
name: 'Release']]
}
} catch (err) {
def hi = err.getCauses()
echo "Exception thrown:\n ${hi}"
echo err.getLocalizedMessage()
echo err.getCause()
echo err.toString()
echo err.getClass().getName()
}
Run Code Online (Sandbox Code Playgroud)
但这给出了相同的(据我所知)行为并捕获了用户按下“中止”和输入超时的错误。
这是超时的输出:
[Pipeline] timeout
[Pipeline] {
[Pipeline] input
Input requested
[Pipeline] }
[Pipeline] // timeout
[Pipeline] echo
Exception …Run Code Online (Sandbox Code Playgroud) gradle中有没有一种方法可以将junit xml报告合并到单个测试报告文件中。
当我们在ant中使用cp-suite执行IntegrationTestSuite.java时,只有一个junit报告。在gradle上创建了多个junit报告。
IntegrationTestSuite.java
@RunWith(Categories.class)
@Categories.IncludeCategory(IntegrationTests.class)
@Categories.ExcludeCategory(DebugJenkinsTests.class)
@Suite.SuiteClasses(AllTestSuite.class)
public class IntegrationTestSuite { /* nop */
}
Run Code Online (Sandbox Code Playgroud)
摘自 build.xml
<junit>
<formatter type="xml" />
<batchtest todir="${testreport.dir}">
<fileset dir="${test-src.dir}">
<include name="**/IntegrationTestSuite.java" />
</fileset>
</batchtest>
</junit>
Run Code Online (Sandbox Code Playgroud)
摘自 build.gradle
task integrationTestSandro(type: Test) {
reports.html.enabled = false
include '**/IntegrationTestSuite*'
reports.junitXml.destination = "$buildDir/test-results/integration"
maxHeapSize = testTaskMaxHeapSize
jvmArgs testTaskJVMArgs
}
Run Code Online (Sandbox Code Playgroud) 我想将我的库切换到 Gradle Script Kotlin,但我找不到配置 uploadArchive 任务的方法。
这是我想要翻译的 groovy kotlin 脚本:
uploadArchives {
repositories {
mavenDeployer {
repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
authentication(userName: ossrhUsername, password: ossrhPassword)
}
snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
authentication(userName: ossrhUsername, password: ossrhPassword)
}
pom.project {
/* A lot of stuff... */
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我明白它应该从
task<Upload>("uploadArchives") {
/* ??? */
}
Run Code Online (Sandbox Code Playgroud)
... 差不多就这样了!
AFAIU,在 Groovy 中,该Upload任务由MavenPlugin. 它在 Kotlin 中如何工作?
我正在使用带有嵌套文件夹的CloudBees文件夹插件和用于管理不同管道作业的秘密的Credentials插件.假设我有一个像这样的Jenkins文件夹结构.
folder1/
folder2/
job1
Run Code Online (Sandbox Code Playgroud)
文件夹插件允许我将凭据域和凭据范围限定到文件夹,以便只有这些文件夹中的作业才能访问这些凭据.
我可以通过UI执行此操作,但我们经常轮换这些凭据并希望自动执行部分操作.
我们想到这样做的一种方法是使用Jenkins CLI.
这里的凭证插件提供了各种不同的命令.例如:
list-credentials - 列出特定商店中的凭据
java -jar jenkins-cli.jar -s http:// localhost:8080 / list-credentials STORE
列出特定商店中的凭据
商店:商店ID
list-credentials-context-resolvers - 列出凭据上下文解析器
java -jar jenkins-cli.jar -s http:// localhost:8080 / list-credentials-context-resolvers
列出凭据上下文解析器
list-credentials-providers - 列出凭据提供程序
java -jar jenkins-cli.jar -s http:// localhost:8080 / list-credentials-providers
列出凭据提供程序
Jenkins全局范围的存储由我查看源代码确定,它显示了它system::system::jenkins.
如果我运行一些命令,我可以开始提取一些信息:
? java -jar credential-management/build/jenkinsAutomation/Localhost/cli/jenkins-cli.jar -s http://localhost:8080 list-credentials-context-resolvers --username admin --password password
Run Code Online (Sandbox Code Playgroud)
运行以下内容:
? java -jar credential-management/build/jenkinsAutomation/Localhost/cli/jenkins-cli.jar -s …Run Code Online (Sandbox Code Playgroud) 我是Gradle的新手,所以我正在尝试构建一个Java项目并且不确定依赖项.我从来没有让Gradle配置为能够进行我的测试或现在是一个jar文件来编译和运行.
我的build.gradle:
apply plugin: 'java'
apply plugin: 'maven'
repositories {
jcenter()
}
dependencies {
compile 'org.slf4j:slf4j-api:1.7.25'
compile 'org.json:json:20160212'
testCompile 'junit:junit:4.12'
}
Run Code Online (Sandbox Code Playgroud)
这就是我在控制台上得到的声明,它没有看到我的导入:
error: package org.json.simple does not exist
import org.json.simple.JSONParser;
Run Code Online (Sandbox Code Playgroud)
这是我的班级:
import org.json.simple.*;
import java.io.*;
import java.util.*;
import java.lang.*;
public class FileLoader {
@SuppressWarnings("unchecked")
public static void main(String args[]) {
JSONParser parser = new JSONParser();
int count = 0;
try {
Object obj = parser.parse(new FileReader(
"Consumers.json"));
JSONObject jsonObject = (JSONObject) obj;
JSONArray array = jsonObject.getJSONArray("people");
} catch …Run Code Online (Sandbox Code Playgroud) 谁能解释为什么我会收到以下错误,以及可能的解决方案是什么?
在耐久性级别运行:MAX_SURVIVABILITY org.codehaus.groovy.control.MultipleCompilationErrorsException:启动失败:WorkflowScript:43:预期步骤@第 43 行,第 17 列。如果(isUnix()){ ^
WorkflowScript:71:未定义的部分“成功”@第 71 行,第 5 列。成功 { ^
WorkflowScript:78:未定义的部分“失败”@第 78 行,第 5 列。失败 { ^
WorkflowScript:16:工具类型“maven”没有配置“MAVEN_HOME”的安装 - 你的意思是“Maven M2”?@ 第 16 行,第 19 列。maven "MAVEN_HOME" ^
WorkflowScript:17:工具类型“jdk”没有配置“JAVA_HOME”的安装 - 您的意思是“null”吗?@第17行,第17列。jdk“JAVA_HOME”^
中的代码Jenkinsfile如下:
pipeline {
// agent defines where the pipeline will run.
agent {
// Here we define that we wish to run on the agent with the label SL202_win
label "SL202_win"
}
// The tools directive allows you to automatically install tools …Run Code Online (Sandbox Code Playgroud) 我不知道如何定义动态共享库,并将其使用到我的管道中:
myLib=library (identifier: 'lib@master', retriever: modernSCM(
[$class: 'GitSCMSource',
remote: 'https://mygit.orga.com/git/ORGA/Jenkins-libs.git',
credentialsId: 'aaaaaaa-8f3f-4e3c-vvvvvvv-6c77351e7872',
includes: '*',
excludes: 'test'
]))
pipeline {
agent {
node(){
label("linux&&!master")
}
}
tools {
jdk "JDK1.8.0_45"
maven "MVN339"
}
stages{
stage("test lib"){
steps {
script {
myLib.a.b.c.Utils.sayHelloTo("Guillaume")
log.info("test lib")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在运行时它失败并显示:
java.lang.ClassNotFoundException: Utils
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
Run Code Online (Sandbox Code Playgroud)
有什么问题的想法吗?我在网上找不到有关动态共享库教程的任何信息。
编辑:添加库树:
src
--a
--b
--c
Utils.groovy
Run Code Online (Sandbox Code Playgroud)
Utils.groovy内容:
java.lang.ClassNotFoundException: Utils
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) …Run Code Online (Sandbox Code Playgroud) jenkins ×4
gradle ×2
java ×2
junit ×2
amazon-iam ×1
arraylist ×1
aws-sdk ×1
build.gradle ×1
cassandra ×1
datastax ×1
dependencies ×1
json-simple ×1