gpt4 book ai didi

java - Gradle - 只有在测试通过时才创建 jar

转载 作者:搜寻专家 更新时间:2023-11-01 02:04:08 24 4
gpt4 key购买 nike

我是 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'
}

谢谢!

最佳答案

最简单的解决方案是将您希望gradle 执行的所有任务按顺序排列。所以你可以使用以下内容:

gradle clean test jar

任务分组

  • clean:这主要用于安全地删除最后一个过时的 jar(这不是强制性的);
  • test:执行测试;
  • jar:创建 jar 工件。

关键点:如果其中一个任务由于某种原因失败,gradle 将停止执行。

因此,如果由于某种原因只有一个测试失败,则会引发异常并且根本不会创建 jar 文件


替代方案:添加'test'作为'jar'的依赖

只是为了探索一些其他的可能性:修改 build.gralde 文件如下:

[...]
jar {
dependsOn 'test'
[...]
}
[...]

现在每次运行 gradle jar 之前,test task 都会自动执行。


使用“dependsOn”模拟纯命令行解决方案

要使用依赖方法模拟第一个命令行方法(即 gradle clean test jar),您必须进一步修改 build.gradle。这是因为不能保证多个 dependsOn 语句按顺序求值:

[...]
jar {
dependsOn 'clean'
dependsOn 'test'
tasks.findByName('test').mustRunAfter 'clean'
[...]
}
[...]

现在您可以使用:

gradle jar

并且任务 cleantest 都在实际的 jar 任务之前执行(以正确的顺序)。

关于java - Gradle - 只有在测试通过时才创建 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38640419/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com