我们有一个使用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?
谢谢!
我们有一个使用Java插件的Gradle项目,该项目具有一些需要构建的命令行工具。该项目只是与相关性一起打包到一个jar中。然后,我们想要几个...
apply plugin: "application"
提供的内容之上声明其他任务。有关可用的相关任务,请参见Gradle用户指南中的application plugin一章。application
插件生成多个启动脚本的一种方法: