小编Xel*_*ian的帖子

在构建生命周期中添加Gradle的钩子?

在Gradle有很多钩子.但我无法准确理解它们的应用时间.从文档中我发现了构建和项目的钩子:

  • 的addListener(听众)
  • afterProject(关闭)
  • beforeProject(关闭)
  • buildFinished(关闭)
  • settingsEvaluated(关闭)
  • taskGraph.whenReady
  • projectsLoaded
  • 对于项目

  • project.afterEvaluate()
  • project.beforeEvaluate()
  • 因此,我尝试从Gradle in Action(Muschko,Benjamin."挂钩到构建生命周期"一书中对图形进行表示."Gradle in Action.Np:np,2014.100.打印.)以获得更好的全局图片钩子何时何地适用?

    那么当添加钩子以及是否有其他构建时,项目挂钩?

    在此输入图像描述

    hook lifecycle gradle

    12
    推荐指数
    1
    解决办法
    3890
    查看次数

    如何使用Gradle将参数传递给main方法?

    我必须将两个参数传递给我的main方法.我的构建脚本是

    // Apply the java plugin to add support for Java
    apply plugin: 'java'
    
    // In this section you declare where to find the dependencies of your project
    repositories {
        // Use 'maven central' for resolving your dependencies.
        mavenCentral()
    }
    
    // In this section you declare the dependencies for your production and test code
    dependencies {
        compile 'com.example:example-core:1.7.6'
    }
    
    task main(type: JavaExec, dependsOn: classes) {
        description = 'This task will start the main class of the example project'
        group = …
    Run Code Online (Sandbox Code Playgroud)

    java program-entry-point gradle commandargument

    10
    推荐指数
    2
    解决办法
    1万
    查看次数

    如何使用公共Gradle API创建临时文件/文件夹?

    从Gradle的代码中我发现有一些方法: TemporaryFileProviderTestNameTestDirectoryProvider用于创建临时文件和文件夹,但它们不是公共API的一部分.

    org.gradle.api.internal.file.TemporaryFileProvider
    org.gradle.test.fixtures.file.TestNameTestDirectoryProvider
    
    Run Code Online (Sandbox Code Playgroud)

    如果公共Gradle的API中有任何方法可以让用户创建临时文件和文件夹,如果没有,最好的方法是什么?

    PS.我org.junit.rules.TemporaryFolder用于JUnit测试和JavaFile.createTempFile

    directory junit file temporary gradle

    10
    推荐指数
    1
    解决办法
    2998
    查看次数

    如何从Gradle中的根项目中清除buildSrc目录?

    多项目在构建buildSrc目录.

      buildSrc
           ---build
           ---  subProject1
              ----build (2)
           ---  subProject2
               ----build (3)
           ---  subProject3
              ----build  (4)
           ---  subProject4
              ----build  (5)
        config
        gradle
        src
        build (1)
    
    Run Code Online (Sandbox Code Playgroud)

    当我在项目的根目录中时,我写道:

    gradle clean
    
    Run Code Online (Sandbox Code Playgroud)

    但只删除了根项目的构建目录(标记为1).如何触发Gradle删除所有构建目录prom buildSrc而不必手动到buildSrc并写入gradle clean.(标记为2,3,4,5)

    build multi-project gradle

    7
    推荐指数
    2
    解决办法
    1428
    查看次数

    如何在Java中使用正则表达式拆分后删除空结果?

    我想找到给定字符串中的所有数字(所有数字都用字母混合但是用空格分隔).我尝试拆分输入字符串但是在检查结果数组时我发现有很多空字符串,所以如何更改我的拆分正则表达式删除这个空格?

    Pattern reg = Pattern.compile("\\D0*");
    String[] numbers = reg.split("asd0085 sa223 9349x");
    for(String s:numbers){
        System.out.println(s);
    }
    
    Run Code Online (Sandbox Code Playgroud)

    结果如下:

    85
    
    
    223
    9349
    
    Run Code Online (Sandbox Code Playgroud)

    我知道我可以迭代数组并删除空结果.但是如何只用正则表达式呢?

    java regex

    7
    推荐指数
    2
    解决办法
    1万
    查看次数

    如何在Gradle> 2.0中查找PMD规则集名称

    在Gradle的Java项目中,我们可以通过pmd插件使用PMD .配置我们想要使用的规则可以通过两种方式实现:

    • ruleSetFiles - 要使用的自定义规则集文件.有关如何编写规则集文件的信息,请参阅官方文档.示例:ruleSetFiles = files("config/pmd/myRuleSet.xml")
    • ruleSets要使用的内置规则集.请参阅内置规则集的官方列表.

    使用ruleSetFiles,您可以找到规则的名称并添加或排除规则,但在文档中没有关于ruleStes的信息吗?从哪里可以找到确切的名字?根据我从其他项目中发现的名称,这些名称与PMD文档中的名称类似,但是小写.例如:

    Braces - > java-braces
    Clone - > java-clone
    Implementation - >java-implementation
    Code Size - > java-codesize
    
    Run Code Online (Sandbox Code Playgroud)

    但是像安全代码指南这样的转换不会转换为- > java-securitycodeguidelines,而只是转换为java-sunsecure.我发现了与PMD 5.1.1一起使用的名称.是:

    pmd {
          ruleSets = [
            'java-android',
            'java-basic',
            'java-braces',
            'java-clone',
            'java-codesize',
            'java-comments',
            'java-controversial',
            'java-coupling',
            'java-design',
            'java-empty',
            'java-finalizers',
            'java-imports',
            'java-j2ee',
            'java-javabeans',
            'java-junit',
            'java-logging-jakarta-commons',
            'java-logging-java',
            'java-migrating',
            'java-naming',
            'java-optimizations',
            'java-strictexception',
            'java-strings',
            'java-sunsecure',
            'java-typeresolution',
            'java-unnecessary',
            'java-unusedcode'           
            ]
        toolVersion = '5.1.1'
        ignoreFailures = true
    }
    
    Run Code Online (Sandbox Code Playgroud)

    如何查找文档中显示的PMD名称与Gradle名称之间的映射?

    java pmd gradle

    7
    推荐指数
    1
    解决办法
    3271
    查看次数

    为什么可以毫无问题地在 Spock 中测试私有方法/字段?

    package com.example.dev;
    public class AClass {
     private Integer a =10;
    ...//other code
    }
    
    Run Code Online (Sandbox Code Playgroud)

    当我尝试在我的 Spock 方法中访问 a 时:

    package com.example.dev;
    def 'test a'() {
     AClass aClassVar = new AClass()
     aClassVar.a = new Integer(100);
    ...//other testing stuff
    }
    
    Run Code Online (Sandbox Code Playgroud)

    它工作正常。为什么会发生这种情况?Spock 是否使用反射来访问私有字段?还是我的封装没写好?

    methods unit-testing field private spock

    7
    推荐指数
    1
    解决办法
    2万
    查看次数

    如何在Java中使用前导零对数字进行排序?

    嗨我有字符串列表作为输入与前导零,我想知道如何排序它们.

    输入(未分类)

    0-2
    0-1
    1
    1-2
    1-0
    1-1
    4-3
    
    Run Code Online (Sandbox Code Playgroud)

    输出(排序)

    0-1
    0-2
    1
    1-0
    1-1
    1-2
    4-3
    
    Run Code Online (Sandbox Code Playgroud)

    我可以删除" - "和前导零,但随后0-1 -> 11 -> 1是相同的,不能进行排序.我想到的另一件事是删除零,并且在这些数字中没有导致零,因此将0放在后面

    0-1->1
    1->10
    10->100
    
    Run Code Online (Sandbox Code Playgroud)

    那么在开始位置使用Java排序和后面的数字但是已排序?

    编辑:

    • 结构深度无限,所以1-2-3-4-5-6 ......
    • 我只能有一个前导0
    • 只有破折号( - )和点(.)是允许的分米.

    java sorting algorithm

    7
    推荐指数
    1
    解决办法
    919
    查看次数

    如何在java中的ArrayList上添加监听器

    我想在java中创建自己的ArrayList实现,可以在列表更改时进行侦听,并在发生这种情况时执行操作.从我所读到的,我明白我不能扩展ArrayList然后添加监听器.

    我想在类中使用MyList作为带有public修饰符的变量,因此用户可以直接更改它并在更改时执行操作.

    class MyList extends ArrayList<object>.... {  ... }
     class UseOfMyList {
     public MyList places = new MyList<Object>();
     places.add("Buenos Aires");
     //and to be able to do that
     List cities = new ArrayList<Object>();
     cities.add("Belmopan");
     places = cities;
    
    Run Code Online (Sandbox Code Playgroud)

    那么如何创建以及何时添加,删除或传递另一个列表到MyList要执行的操作?

    java list add arraylist listener

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

    为什么我们必须为Gradle的测试指定useTestNG()?

    如果我们想要用于我们的TestNG测试,我们必须编写如下内容:

    dependencies {
       compile project(':model')
       testCompile 'org.testng:testng:6.8'
    }
    
    test.useTestNG()
    
    Run Code Online (Sandbox Code Playgroud)

    但是当使用Spock时,我们只指定依赖项

    dependencies {
       compile project(':model')
       testCompile 'org.spockframework:spock-core:0.7-groovy-2.0'
    }
    
    Run Code Online (Sandbox Code Playgroud)

    为什么我们必须指定test.useTestNG()

    testing testng gradle spock

    6
    推荐指数
    1
    解决办法
    4045
    查看次数