[英]Understanding gradle multiproject building
我有以下项目树:
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
如何构建项目。 我为MP::build.gradle
运行gradle build
,产生了以下输出:
: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
因此,当我们为MP::build.gradle
运行gradle build
时,我们gradle build
MP::build.gradle
是解决所有依赖关系。 据我了解,这意味着要从外部存储库加载jar,并在需要时从单独的项目编译jar
文件。 就我而言,这只是获取API
项目jar
-file。
所以我的问题是,编译该jar
的动作的子序列是什么。 gradle
遇到compie project(':API')
时会发生什么。 它正在寻找gradle.settings
文件并报告错误(如果没有),或者它build.gradle
在根目录中寻找build.gradle
?
要快速了解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:“默认情况下,所有项目的配置都在执行任何任务之前进行”
我希望你已经知道了。
因此gradle构建生命周期对其进行了解释...生命周期如下1)初始化2)配置3)执行。
对于您的多项目构建的特殊情况,会发生什么
1)初始化::在这里,无论您从哪个项目运行都将搜索settings.gradle(运行任务时,它总是尝试查找settings.gradle文件,并包含其include指令中定义的那些项目。)2)配置它根据您尝试运行的任务及其依赖关系创建任务树。 3)执行::
运行任务树。
请告诉我这是否有帮助。
您可以阅读此页面以更清楚。
http://www.gradle.org/docs/current/userguide/build_lifecycle.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.