在Gradle有很多钩子.但我无法准确理解它们的应用时间.从文档中我发现了构建和项目的钩子:
对于项目
因此,我尝试从Gradle in Action(Muschko,Benjamin."挂钩到构建生命周期"一书中对图形进行表示."Gradle in Action.Np:np,2014.100.打印.)以获得更好的全局图片钩子何时何地适用?
那么当添加钩子以及是否有其他构建时,项目挂钩?

我必须将两个参数传递给我的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) 从Gradle的代码中我发现有一些方法: TemporaryFileProvider和TestNameTestDirectoryProvider用于创建临时文件和文件夹,但它们不是公共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
我多项目在构建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)
我想找到给定字符串中的所有数字(所有数字都用字母混合但是用空格分隔).我尝试拆分输入字符串但是在检查结果数组时我发现有很多空字符串,所以如何更改我的拆分正则表达式删除这个空格?
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)
我知道我可以迭代数组并删除空结果.但是如何只用正则表达式呢?
在Gradle的Java项目中,我们可以通过pmd插件使用PMD .配置我们想要使用的规则可以通过两种方式实现:
使用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名称之间的映射?
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 是否使用反射来访问私有字段?还是我的封装没写好?
嗨我有字符串列表作为输入与前导零,我想知道如何排序它们.
输入(未分类)
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 -> 1并1 -> 1是相同的,不能进行排序.我想到的另一件事是删除零,并且在这些数字中没有导致零,因此将0放在后面
0-1->1
1->10
10->100
Run Code Online (Sandbox Code Playgroud)
那么在开始位置使用Java排序和后面的数字但是已排序?
编辑:
我想在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要执行的操作?
如果我们想要用于我们的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()?