我是Gradle的新手。我想操作以下build.gradle内容来执行此操作。我不想单独运行测试然后通过单独的命令构建jar,而是想在一个命令中同时执行这两个操作,除非如果其中一个测试失败就不会创建jar(它甚至不会尝试构建jar)
apply plugin: 'java'
apply plugin: 'eclipse'
version = '1.0'
sourceCompatibility = 1.6
targetCompatibility = 1.6
// Create a single Jar with all dependencies
jar {
manifest {
attributes 'Implementation-Title': 'Gradle Jar File Example',
'Implementation-Version': version,
'Main-Class': 'com.axa.openam'
}
baseName = project.name
from {
configurations.compile.collect {
it.isDirectory() ? it : zipTree(it)
}
}
}
// Get dependencies from Maven central repository
repositories {
mavenCentral()
}
test {
testLogging {
showStandardStreams = true
}
}
// Project dependencies
dependencies {
compile 'com.google.code.gson:gson:2.5'
testCompile 'junit:junit:4.12'
}
谢谢!
答案 0 :(得分:6)
最简单的解决方案是按顺序执行您希望gradle
执行的所有任务。所以你可以使用以下内容:
gradle clean test jar
任务突破
clean
:这主要用于安全删除最后一个过时的jar(这不是强制性的); test
:执行测试; jar
:创建jar工件。 关键点:如果某个任务由于某种原因失败gradle
停止执行。
所以如果只是一次测试失败由于某种原因引发了异常并且根本没有创建jar文件。
只是为了探索其他一些可能性:修改build.gralde
文件,如下所示:
[...]
jar {
dependsOn 'test'
[...]
}
[...]
现在,每次运行gradle jar
时,test
任务都会自动执行。
要使用依赖方法模拟第一个命令行方法(即gradle clean test jar
),您必须进一步修改build.gradle
。这是因为无法保证按顺序评估多个dependsOn
语句:
[...]
jar {
dependsOn 'clean'
dependsOn 'test'
tasks.findByName('test').mustRunAfter 'clean'
[...]
}
[...]
现在你可以使用:
gradle jar
,clean
和test
任务在实际jar
任务之前执行(按正确的顺序)。