具有多个jar的项目中的Gradle bootRepackage任务

时间:2015-05-03 15:16:19

标签: java gradle spring-boot

我有一个使用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。我是不是做了一些不正确的事情,或者与贾斯塔斯做的事情没有做到应该做的事情呢?

0 个答案:

没有答案