Gradle子项目类依赖

时间:2014-08-26 07:51:54

标签: java intellij-idea gradle

我的gradle项目中有几个子项目:

Project
    Common
    Consumer1
    Consumer2
    .....
    ConsumerN

我的第一个 - 主要目标 - 是将Common项目中的类包含到每个ConsumerN项目的jar中。所以我可以在Common项目中独立开发和测试共享部分(DB逻辑,一些工具),然后其他项目将获得这些类(已经过测试)并将它们包含在它们的罐子里。

第二个目标是让IntelliJ Idea理解这种依赖并正确使用它。

请您提出最概念和最正确的方式"在gradle中这样做。

1 个答案:

答案 0 :(得分:0)

假设您有以下项目结构:

    • 的build.gradle
    • 共同
    • M1
    • 平方米
    • 立方米
    • settings.gradle

首先你需要设置一个多模块项目 - 它在settings.gradle中完成(这是一个普通的gradle脚本),其内容如下:

include 'm1', 'm2', 'm3', 'common'

每个项目设置都在专用的build.gradle文件中完成,但您询问的设置可以全局完成 - 在根build.gradle中。以下是其内容:

subprojects {
    apply plugin: 'java'
}

subprojects.findAll { it.name != 'common' }.each { 
    configure(it) {
        dependencies {
            project(':common')
        }
    }
}

问题是从mN模块产生了什么工件。如果这些是jar文件,您需要使用fatjarshadow插件。如果有web应用程序war插件是你需要的。

进一步reading

IntelliJ IDEA应该在使用gradle包装器导入项目时处理这些依赖项。