【发布时间】:2014-01-11 06:12:27
【问题描述】:
我们有一个使用 java 插件的 Gradle 项目,它有几个需要构建的命令行工具。该项目只是打包到一个带有其依赖项的 jar 中。然后,我们需要几个启动脚本来启动该项目中每个工具的各种入口点。
application 插件自然是一个不错的选择。因此我们将 java 更改为 application 并提供mainClassName 来创建启动脚本和 tar 可分发文件。这有助于创建单个应用程序 jar,但只有一组使用指定的 mainClassName 的启动脚本。
我们如何为不同的入口点创建多个启动脚本? (不同的mainClassName?)
我尝试的一种方法是创建一些应用了 application 插件并单独指定各个 mainClassNames 的子项目
allprojects {
apply plugin: 'java'
repositories {
// maven repos
}
dependencies {
compile 'com.thirdparty:somejar:1.0'
}
sourceCompatibility = 1.7
}
subprojects {
apply plugin: 'application'
}
project(':tools:csvLoader') {
mainClassName = 'com.demo.tools.csvLoader.Loader'
}
project(':tools:summariser') {
mainClassName = 'com.demo.tools.summary.Summarise'
}
并在根项目settings.gradle中引用
include "tools","tools:csvLoader","tools:summariser"
这行得通 - 但是每个子项目都会创建一个相同的 jar(仅以子项目的名称命名),并且每个 subdir 构建文件夹都包含该 jar 的副本以及所有依赖项的另一个副本。感觉有点浪费。新开发人员看到那里的子项目包含所有这些任务而没有任何代码也可能会感到困惑。
有没有更好的方法告诉 gradle 执行多个与应用程序相关的任务,但更改每个任务的 mainClassName 而不必诉诸于创建空子项目?
谢谢!
【问题讨论】:
标签: gradle