带装配模块的Gradle弹簧靴

时间:2017-04-30 10:51:26

标签: java gradle spring-boot

我是Gradle的新手,我遇到了问题(使用Gradle 2.14)

我的项目有3个子项目:assembly,sprinBootProject,E2E
装配模块负责将弹簧启动应用程序的jar与属性文件一起压缩 E2E模块是一个“端到端”的终端'测试模块,用于测试弹簧启动应用程序。

我在assembly / build.gradle中使用分发插件,如下所示:

{% block content %}
REPORTSz id = {{pid }}
{% endblock %}

但是我需要确保在汇编子项目之前评估springBootProject,所以我使用了dependsOn:

apply plugin: 'distribution'

distributions {
    main {
        baseName "project-assembly"
        contents{
            from project(':springBootProject').fileTree(dir: 'build/libs', include: ['*.jar'])
            from project(':springBootProject').fileTree(dir: 'build/resources/main', includes: ['*.properties', 'conf/*.properties'])
        }
    }
}

当我添加这一行时,我发现E2E模块在compileTestJava任务中失败,所以这一行影响了Spring启动应用程序的生成方式(我认为)

E2E /的build.gradle:

distZip.dependsOn(':springBootProject:build')

所以我的问题是我做得对吗?为什么当我添加dependsOn行时,E2E模块受到影响,如何强制Gradle在装配模块之前评估弹簧启动应用?

1 个答案:

答案 0 :(得分:0)

我明白了。 Gradle将按字母顺序评估模块 所以评估将是:assembly - > E2E - > springBootProject
将此行添加到assembly / build.gradle时:

distZip.dependsOn(':springBootProject:build')

评估的顺序变为:assembly - > springBootProject - > E2E

现在在' springBootProject'模块我使用spring boot插件生成可执行jar,这个可执行jar是由任务生成的:springBootProject:bootRepackage,它使用由:springBootProject:jar任务生成的jar并将其转换为可执行文件。

现在因为' E2E'模块依赖于springBootProject'它将使用它的jar,但现在这个jar是可执行的,因此我在E2E'中有编译错误。

所以我必须确保' E2E' module获取原始jar而不是可执行jar。 所以我在springBootProject / build.gradle中添加了这一行:

bootRepackage.mustRunAfter(':E2E:test')

似乎解决了这个问题