Java Gradle多模块groovy';项目';未在帮助文件中计算对象

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 |-->

我有一个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
,并将该文件作为

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
。这里的期望是它应该迭代每个子项目,并为我的最终包收集类