2

我正在尝试将我的项目迁移到最新版本的 Spring 和 Spring Boot。一切都很顺利,直到我遇到这个问题。

我们的一个项目生成了两个版本的最终 Jar,一个具有最小依赖项的普通可运行版本,另一个具有所有额外模块的版本。

当我使用 Spring Boot 1.5.x 版本时,解决方案很简单,我们使用了“customConfiguration”

当我使用旧插件时,我的配置文件看起来或多或少像这样

bootRepackage{ 
    customConfiguration = "addons"
}


dependencies {
    compile "my.org:core-lib:1.0.0"
    addons  "my.org:extra-lib:1.0.0"
}

nowbootRepackage被替换为bootJarwhich 不持有财产customConfiguration。这是否可以在最新版本的插件中执行,如果可以,那么有人可以指出我正确的方向吗?

4

1 回答 1

8

bootJar 是 Jar 类的子类,所以你可以在这里使用 Jar 任务的配置。

例子:

configurations {
    //second jar's configuration
    addons
}

dependencies {
    ....
    // sample dependency
    addons group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.11.1'
}

task customJar(type: org.springframework.boot.gradle.tasks.bundling.BootJar){
    baseName = 'custom-spring-boot'
    version =  '0.1.0'
    mainClassName = 'hello.Application'
    from {
        // this is your second jar's configuration
        configurations.addons.collect { it.isDirectory() ? it : zipTree(it) }
    }

    with bootJar
}
// add a dependency to create both jars with gradle bootJar Command
bootJar.dependsOn customJar 

(有更简单的方法可以做到这一点,我不知道)

于 2018-10-15T18:38:00.157 回答