Java Gradle:没有多个项目的多个JAR
我有一个库,用于使用Gradle构建许多CLI工具。每个CLI工具都是一个单独的JAR。目前,每个工具都需要一个单独的Gradle项目,以及一组相关的目录,如下所示: 拥有所有这些结构会导致整个工具集合变得非常笨拙,难以使用。有没有办法将所有不同的Java Gradle:没有多个项目的多个JAR,java,gradle,Java,Gradle,我有一个库,用于使用Gradle构建许多CLI工具。每个CLI工具都是一个单独的JAR。目前,每个工具都需要一个单独的Gradle项目,以及一组相关的目录,如下所示: 拥有所有这些结构会导致整个工具集合变得非常笨拙,难以使用。有没有办法将所有不同的Mains收集到一个文件夹中(适当地重命名),并配置Gradle将每个文件夹变成一个单独的JAR FWIW,jar当前是使用创建的。罐子大小不重要 提前感谢。JAR只是包含META-INF文件夹的zip文件。使用Zip任务创建它们,并使用depend
Main
s收集到一个文件夹中(适当地重命名),并配置Gradle将每个文件夹变成一个单独的JAR
FWIW,jar当前是使用创建的。罐子大小不重要
提前感谢。JAR只是包含
META-INF
文件夹的zip文件。使用Zip
任务创建它们,并使用dependsOn
作为构建序列的一部分运行任务
我有如下更改jar文件的代码:
task changeJar (type: Zip) {
baseName project.name
extension 'jar'
destinationDir new File('build')
entryCompression ZipEntryCompression.STORED
from { zipTree(new File(core.libsDir, core.name + '.jar')) }
from ( <somewhere else> ) {
exclude 'META-INF/'
}
}
task changeJar(类型:Zip){
baseName项目名称
扩展名“jar”
destinationDir新文件('build')
entryCompression ZipEntryCompression.storage
来自{zipTree(新文件(core.libsDir,core.name+'.jar'))}
从(){
排除“META-INF/”
}
}
我不确定它是否合适,但您可能对我的插件感兴趣
例如:
目录
- src/main/java,src/test/java,src/main/resources,src/test/resources-通用代码和测试
- src/tool1/java,src/testTool1/java,src/tool1/resources,src/testTool1/resources-tool1-only源代码
- src/tool2/java,src/testTool2/java,src/tool2/resources,src/testTool2/resources-tool2-only源代码
- projectName.jar
- projectName-tool1.jar
- projectName-tool2.jar
apply plugin: 'com.lazan.javaflavours'
javaFlavours {
flavour 'tool1'
flavour 'tool2'
}
dependencies {
compile 'a:a:1.0' // common to all tools
compileTool1 'b:b:2.0' // compile deps for tool1 only
runtimeTool2 'c:c:2.0' // runtime deps for tool2 only
}