Gradle - 很多模块

时间:2016-07-28 09:01:30

标签: java gradle module build.gradle

我目前有一个Java项目,其中(简化)如下所示: (它们不是这样命名的,它只是一个例子)

core (project 1)
  core.java
  utils:
    util.java
    anotherutil.java

modules (project 2)
  a
    amodule.java
  b
    bmodule.java
  c
    cmodule.java
  ...
  z
    zmodule.java

我制作了一个构建核心项目的build.gradle,工作正常。

我的问题:有没有办法为所有26个不同的“模块”制作26个不同的jar,而不创建26个不同的构建脚本?

构建程序时,我不想每次都运行26个不同的构建脚本。我很喜欢运行2个scrips,一个用于核心,另一个用于模块。这些模块都依赖于核心和核心软转换(在不需要它的情况下依赖它,但在它存在时具有一些额外的功能)。

所有模块都应该有自己的jar,如下所示:

a.jar:
  a (package)
    amodule.java
b.jar:
  b (package)
    bmodule.java
etc...

1 个答案:

答案 0 :(得分:1)

Gradle本身支持自定义多项目构建,这是理想的方式。

由单独的Jar表示的所有模块应该作为项目分开。

但是,如果您仍希望在某些项目中使用内容/源文件提取不同的组件/模块,那么就有可能!

通过微小的调整,您可以创建一个自定义任务,创建满足您所有条件的Jar存档。

PS:根本不建议创建项目的逻辑模块。请改用子项目并使用Gradle Multi-Project构建

进行配置

不推荐::从源文件夹(项目)生成多个JARS

实现此目标的最简单方法之一是创建自定义任务

对于模块A

task aJar(type: Jar) {  
    from(sourceSets.main.output) {  
        include "a/**" 
    }  
}

对于模块B

task bJar(type: Jar) {  
    from(sourceSets.main.output) {  
        include "b/**" 
    }  
}

等等。

现在指定对任务的依赖

jar.dependsOn(aJar,bJar)

他们最终你可以执行gradle jar来获得所有必需的罐子