小编mko*_*bit的帖子

Jackson JSON:从json-tree获取节点名称

如何使用Jackson从JSON树接收节点名称?JSON-File看起来像这样:

{  
    node1:"value1",
    node2:"value2",
    node3:{  
        node3.1:"value3.1",
        node3.2:"value3.2"
    }
}
Run Code Online (Sandbox Code Playgroud)

我有

JsonNode rootNode = mapper.readTree(fileReader);
Run Code Online (Sandbox Code Playgroud)

并需要类似的东西

for (JsonNode node : rootNode){
    if (node.getName().equals("foo"){
        //bar
  }
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

java json jackson

49
推荐指数
5
解决办法
8万
查看次数

如何在Java中使用@inherited注释?

我没有@Inherited在Java中获得注释.如果它自动为你继承了这些方法,那么如果我需要以自己的方式实现该方法那么那么呢?

如何了解我的实施方式?

再加上它是说,如果我不想用这个,做它,而在一个老式的Java办法,我必须实现的equals(),toString()以及hashCode()该方法的Object类,也是的注释类型的方法java.lang.annotation.Annotation类.

这是为什么?

即使我不知道@Inherited注释和用于工作的程序,我也从未实现过.

请有人从头开始解释我这件事.

java inheritance annotations

49
推荐指数
1
解决办法
3万
查看次数

如何在gradle中使用exec()输出

我正在尝试实现一个gradle任务,从一系列环境变量值和shell执行中动态创建buildsignature.properties文件.我有它主要工作,但我似乎无法获得shell命令的输出.这是我的任务......

task generateBuildSignature << {
    ext.whoami = exec() {
        executable = "whoami"
    }
    ext.hostname = exec() {
         executable = "hostname"
    }
    ext.buildTag = System.env.BUILD_TAG ?: "dev"

    ant.propertyfile(
        file: "${buildDir}/buildsignature.properties",
        comment: "This file is automatically generated - DO NOT EDIT!" ) {
        entry( key: "version", value: "${project.version}" )
        entry( key: "buildTimestamp", value: "${new Date().format('yyyy-MM-dd HH:mm:ss z')}" )
        entry( key: "buildUser", value: "${ext.whoami}" )
        entry( key: "buildSystem", value: "${ext.hostname}" )
        entry( key: "buildTag", value: "$ext.buildTag" )
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,生成的属性字段无法获得buildUser和buildSystem的预期结果.

#This file is …
Run Code Online (Sandbox Code Playgroud)

gradle

41
推荐指数
6
解决办法
5万
查看次数

格式化时间hh:mm:ss

如何解析格式化时间,hh:mm:ss以字符串形式输入以获取java中的整数值(忽略冒号)?

java date string-parsing

40
推荐指数
3
解决办法
9万
查看次数

如果存在Optional <>,则抛出异常

假设我想查看流中是否存在对象,如果它不存在,则抛出异常.我可以做的orElseThrow一种方法是使用该方法:

List<String> values = new ArrayList<>();
values.add("one");
//values.add("two");  // exception thrown
values.add("three");
String two = values.stream()
        .filter(s -> s.equals("two"))
        .findAny()
        .orElseThrow(() -> new RuntimeException("not found"));
Run Code Online (Sandbox Code Playgroud)

反过来呢?如果我想在发现任何匹配时抛出异常:

String two = values.stream()
        .filter(s -> s.equals("two"))
        .findAny()
        .ifPresentThrow(() -> new RuntimeException("not found"));
Run Code Online (Sandbox Code Playgroud)

我可以存储Optional,并在isPresent之后进行检查:

Optional<String> two = values.stream()
        .filter(s -> s.equals("two"))
        .findAny();
if (two.isPresent()) {
    throw new RuntimeException("not found");
}
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这种ifPresentThrow行为?试图以这种方式投掷一个不好的做法?

java java-8

40
推荐指数
3
解决办法
3万
查看次数

pod有未绑定的PersistentVolumeClaims

当我推动我的部署由于某种原因我得到我的pod上的错误 __CODE__

以下是我的yaml:

这是在本地运行,而不是在任何云解决方案上运行

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.16.0 ()
  creationTimestamp: null
  labels:
    io.kompose.service: ckan
  name: ckan
spec:
  replicas: 1
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        io.kompose.service: ckan
    spec:
      containers:
        image: slckan/docker_ckan
        name: ckan
        ports:
        - containerPort: 5000
        resources: {}
        volumeMounts:
            - name: ckan-home
              mountPath: /usr/lib/ckan/
              subPath: ckan
      volumes:
      - name: ckan-home
        persistentVolumeClaim:
          claimName: ckan-pv-home-claim
      restartPolicy: Always
status: {}
Run Code Online (Sandbox Code Playgroud)
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: ckan-pv-home-claim
  labels:
    io.kompose.service: ckan
spec:
  storageClassName: ckan-home-sc
  accessModes: …
Run Code Online (Sandbox Code Playgroud)

persistent-storage kubernetes

39
推荐指数
1
解决办法
5万
查看次数

npm安装在docker的jenkins管道中失败

我正在关注Jenkins管道的教程,我可以在节点6.10 docker容器下找到一个"hello world".

但是,当我向ember initrepo 添加一个默认的EmberJS应用程序(使用)并尝试在管道中构建它时,它在运行npm install时失败(因为目录访问问题).Jenkins文件可以在这里看到:https://github.com/CloudTrap/pipeline-tutorial/blob/fix-build/Jenkinsfile

构建打印的错误消息(在本地安装并java -jar jenkins.war在Macbook上运行,不相关但仅包括在内)是:

npm ERR! Linux 4.9.12-moby
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install"
npm ERR! node v6.10.0
npm ERR! npm  v3.10.10
npm ERR! path /.npm
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall mkdir

npm ERR! Error: EACCES: permission denied, mkdir '/.npm'
npm ERR!     at Error (native)
npm ERR!  { Error: EACCES: permission denied, mkdir '/.npm'
npm ERR!     at Error (native)
npm ERR! …
Run Code Online (Sandbox Code Playgroud)

npm jenkins ember.js docker jenkins-pipeline

37
推荐指数
6
解决办法
2万
查看次数

Mockito ArgumentCaptor for Kotlin功能

考虑一个将接口实现作为参数的函数,如下所示:

interface Callback {
    fun done()
}

class SomeClass {        

    fun doSomeThing(callback: Callback) {

        // do something

        callback.done()

    }    
}
Run Code Online (Sandbox Code Playgroud)

当我想测试这个函数的调用者时,我可以做类似的事情

val captor = ArgumentCaptor.forClass(Callback::class)
Mockito.verify(someClass).doSomeThing(captor.capture())
Run Code Online (Sandbox Code Playgroud)

为了测试调用回调时其他类的作用,我可以这样做

captor.value.done()
Run Code Online (Sandbox Code Playgroud)

问题:如果我用高阶函数替换回调接口,我该怎么做呢?

fun doSomeThing(done: () -> Unit) {

    // do something

    done.invoke()

}
Run Code Online (Sandbox Code Playgroud)

这可以用ArgumentCaptor来完成,我必须使用哪个类 ArgumentCaptor.forClass(???)

mockito kotlin

35
推荐指数
3
解决办法
2万
查看次数

Gradle任务检查是否定义了属性

我有一个执行testng测试套件的gradle任务.我希望能够将标志传递给任务以便使用特殊的testng xml套件文件(或者如果未设置标志,则只使用默认套件).

gradle test
Run Code Online (Sandbox Code Playgroud)

应该运行默认的标准测试套件

gradle test -Pspecial
Run Code Online (Sandbox Code Playgroud)

应该运行特殊的测试套件

我一直在尝试这样的事情:

test {
    if (special) {
        test(testng_special.xml);
    }
    else {
        test(testng_default.xml);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我得到一个未定义的属性错误.这是怎样的正确方法?

testng properties task gradle

34
推荐指数
1
解决办法
3万
查看次数

Jenkinsfile和分支的不同策略

我正在尝试将Jenkins文件用于Jenkins中的所有构建,并且我有以下问题.我们基本上有3种构建:

  • pull-request build - 它将在代码审查后合并到master,如果构建有效
  • 手动拉取请求构建 - 与上面相同的构建,但可以由用户手动触发(例如,如果我们有一些不稳定的测试)
  • 一个初始的连续交付管道 - 这将构建代码,部署到存储库,从目标服务器上的存储库安装工件并在那里启动应用程序

我应该如何将所有上述构建包含在一个Jenkins文件中.现在我唯一的想法就是创造一个巨人,如果它将检查它是哪个分支并将执行这些步骤.

所以我有两个问题:

1.在Jenkinsfile中这样做是否合适?

  1. 如何在多分支作业类型中获取当前正在执行的分支的名称?

作为参考,这是我目前的Jenkinsfile:

def servers = ['server1', 'server2']

def version = "1.0.0-${env.BUILD_ID}"

stage 'Build, UT, IT'
node {
    checkout scm
    env.PATH = "${tool 'Maven'}/bin:${env.PATH}"
    withEnv(["PATH+MAVEN=${tool 'Maven'}/bin"]) {
        sh "mvn -e org.codehaus.mojo:versions-maven-plugin:2.1:set -DnewVersion=$version -DgenerateBackupPoms=false"
        sh 'mvn -e clean deploy'
        sh 'mvn -e scm:tag'
    }
}


def nodes = [:]
for (int i = 0; i < servers.size(); i++) {
    def server = servers.get(i)
    nodes["$server"] = { …
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-pipeline

33
推荐指数
3
解决办法
4万
查看次数