我有以下项目树:
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
?
答案 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