我有一个使用gradle和springboot的项目。我的项目还生成了一个测试类的辅助jar,以便其他项目可以利用它们。这似乎将springboot gradle插件从轨道上移除。
插件状态的文档:
bootRepackage任务依赖于Gradle汇编任务,并且在执行时,它会尝试查找限定符为空的所有jar工件(即自动跳过测试和源jar)。
由于bootRepackage发现了所有'创建了jar工件,Gradle任务执行的顺序非常重要。
我所看到的是,bootRepackage只是重新包装最近创建的jar,而不是所有的jar,正如文档所述。这个jar恰好是我的测试类,显然不是我想要的。
查看配置选项,我可以设置bootRepackage.withJarTask
来指定要使用的jar创建任务。如果我将其设置为" jar",bootRepackage将创建正确的存档,但仍然从我的测试任务中选择jar的名称。
我的最小构建脚本演示如下。
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'spring-boot'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.3.RELEASE")
}
}
repositories {
mavenCentral()
}
dependencies {
compile 'com.google.inject:guice:3.0' // random dependency
}
task testJar (type: Jar, dependsOn: testClasses) {
baseName = "test-${project.name}" // somehow springboot uses this name
from sourceSets.test.output
}
configurations {
testArtifacts
}
artifacts {
testArtifacts testJar
}
springBoot.backupSource = false
bootRepackage {
withJarTask jar
classifier = "boot"
}
假设我的项目使用此脚本命名为foo
运行bootRepackage,我得到一个名为test-foo-boot.jar
而不是foo-boot.jar
的jar。我是不是做了一些不正确的事情,或者与贾斯塔斯做的事情没有做到应该做的事情呢?