我有一个具有以下结构的 Java 项目的多模块设置。
mainApp
|--> core-module
| |--> src
| |--> build.gradle
| |--> gradle.properties
|
|--> lib-module
| |--> src
| |--> build.gradle
| |--> gradle.properties
|--> lib-another-module
| |--> src
| |--> build.gradle
| |--> gradle.properties
|--> settings.gradle
|--> build.gradle
在我的settings.gradle我已经指定。
rootProject.name = 'mainApp'
include 'core-module'
include 'lib-module'
include 'lib-another-module'
在我的mainApp/build.gradle文件中,我编写了一个帮助helper-tasks.gradle程序并将该文件导入到我的$rootDir/build.gradle文件中
apply from: "$rootDir/helpers/helper-tasks.gradle"
task('bundleJar', type: Jar)是subprojects { subproject -> }闭包的一部分,我只是打电话给./gradlew bundleJar. 这里的期望是它应该遍历每个子项目并为我的最终包收集类
在helper-tasks.gradle文件中我写了一个gradle tasks如下
task('bundleJar', type: Jar) {
manifest {
attributes 'Manifest-Version': "1.0"
attributes 'Built-By': USER_NAME
attributes 'Created-By': "Java Version: " + JAVA_VERSION
attributes 'Implementation-Version': BUNDLE_VERSION + " Build " + GIT_COMMIT_HASH
attributes 'Build-Timestamp': BUILD_TIME
}
baseName('lib-module')
from project('lib-module').sourceSets.main.output.classesDirs
}
这里project('lib-module').sourceSets.main.output.classesDirs没有提取子模块项目的相对路径,$rootDir/lib-module/build/classes/java/main但仍然引用"$rootDir/build/classes/java/main. 为什么?以及如何将我的设置提供给帮助文件?