了解gradle多项目构建

时间:2014-10-23 17:18:01

标签: java groovy gradle

我有以下项目树:

root
 |
 |--MP
 |  |
 |  |---build.gradle
 |
 |--API
 |
 |---build.gradle
 |
 |---settings.gradle

MP :: buiild.gradle:

dependencies {
    compile project(':API')
}

根:的build.gradle:

subprojects{
    apply plugin : 'java'
    repositories{
        mavenCentral()
    }
    version = '1.0'
    jar{
        manifest{
            attributes 'Gradle': 'Multiproject'
        }
    }
}

根:: settings.gradle:

include 'API', 'MP'

问题是如果我们删除这三个文件中的一个gradle build任务将失败。因此,我不清楚java plugin如何构建项目。我为gradle build运行MP::build.gradle,生成了以下输出:

:API:compileJava
:API:processResources UP-TO-DATE
:API:classes
:API:jar
:MP:compileJava
:MP:processResources UP-TO-DATE
:MP:classes
:MP:jar
:MP:assemble
:MP:compileTestJava UP-TO-DATE
:MP:processTestResources UP-TO-DATE
:MP:testClasses UP-TO-DATE
:MP:test UP-TO-DATE
:MP:check UP-TO-DATE
:MP:build

因此,我们为gradle build运行MP::build.gradle时需要做的第一件事就是解决所有依赖问题。据我所知,它意味着从外部存储库加载jar,如果需要,还可以从单独的项目中编译jar - 文件。就我而言,只需获取API项目jar - 文件。

所以我的问题是编译jar的行动的后续行动是什么。当gradle遇到compie project(':API')时会发生什么。它正在查找gradle.settings文件并报告错误,如果没有或者它首先在根目录中查找build.gradle

2 个答案:

答案 0 :(得分:1)

快速了解java多项目中发生的事情: http://www.gradle.org/docs/current/userguide/tutorial_java_projects.html

"编译该jar的动作的后续序列。"看看图表 http://www.gradle.org/docs/current/userguide/tutorial_java_projects.html

对于跨项目依赖项 http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:cross_project_configuration Quote:"默认情况下,所有项目的配置都在任何任务执行之前发生"

答案 1 :(得分:0)

我希望你已经明白了。

因此,gradle构建生命周期解释了它......生命周期如下所示  1)初始化  2)配置  3)执行。

对于您的多项目构建的特定情况,会发生什么

1)初始化::    在这里搜索settings.gradle,无论你从哪个项目运行它(它总是在你运行任务时尝试查找settings.gradle文件,并包括在其include指令中定义的那些项目。)  2)配置    它根据您尝试运行的任务及其依赖项创建任务树。  3)执行::

运行任务树。

如果这有用,请告诉我。

您可以阅读此页面以获得更清晰的信息。

http://www.gradle.org/docs/current/userguide/build_lifecycle.html