Gradle:没有多个项目的多个JAR

时间:2017-02-21 12:51:02

标签: java gradle

我有一个库,用于使用Gradle构建许多CLI工具。每个CLI工具都是一个单独的JAR。目前,每个工具都需要一个单独的Gradle项目,以及一组相关的目录,如下所示:

enter image description here

拥有所有这些结构导致整个工具集变得非常笨拙并且难以使用。有没有办法将所有不同的Main收集到一个文件夹中(适当地重命名)并配置Gradle将每个文件夹转换为单独的JAR?

FWIW,JAR目前使用https://github.com/johnrengelman/shadow创建。 JAR大小并不重要。

提前致谢。

2 个答案:

答案 0 :(得分:1)

Jars只是包含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/'
    }
}

答案 1 :(得分:1)

我不确定它是否合适,但您可能对我的gradle-java-flavours插件感兴趣。

例如:

 if (e.Url.AbsolutePath == (sender as WebBrowser).Url.AbsolutePath)   

目录

  • src / main / java,src / test / java,src / main / resources,src / test / resources - common code&amp;测试
  • src / tool1 / java,src / testTool1 / java,src / tool1 / resources,src / testTool1 / resources - tool1 only sources
  • src / tool2 / java,src / testTool2 / java,src / tool2 / resources,src / testTool2 / resources - tool2 only sources

  • projectName.jar
  • PROJECTNAME-tool1.jar
  • PROJECTNAME-tool2.jar