Java Gradle多模块groovy';项目';未在帮助文件中计算对象
我有一个Java项目的多模块设置,结构如下Java Gradle多模块groovy';项目';未在帮助文件中计算对象,java,gradle,build,build.gradle,Java,Gradle,Build,Build.gradle,我有一个Java项目的多模块设置,结构如下 mainApp |--> core-module | |--> src | |--> build.gradle | |--> gradle.properties | |--> lib-module | |--> src | |--> build.gradle | |--> gradle.properties |-->
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
,并将该文件作为
apply from: "$rootDir/helpers/helper-tasks.gradle"
task('bundleJar',type:Jar)
是子项目{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
。为什么?如何为助手文件提供设置?有一个工作示例
考虑根目录下的build.gradle
:
subprojects {
apply plugin: 'java-library'
apply from: "${rootProject.projectDir}/helpers/helper-tasks.gradle"
}
和助手/助手任务。gradle
:
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("${project.name}")
from project.sourceSets.main.output.classesDirs
}
请注意,文件名现在与项目名匹配。在本例中,gradle lib module:bundleJar
将使用适当的类生成/lib module/build/libs/lib module.jar
类似地,
gradle-lib-other-module:bundleJar
将生成/lib-other-module/build/libs/lib-other-module.jar
(使用适当的类)。我是否可以向我的“helper-tasks.gradle”文件提供project
对象?谢谢你的回答,但我错过了任务的部分('bundleJar',type:Jar)
是子项目{subproject->}
闭包的一部分,我将调用/gradlew bundleJar
。这里的期望是它应该迭代每个子项目,并为我的最终包收集类