根项目build.gradle
subprojects {
jar {
manifest {
attributes Name: project.archivesBaseName,
Version: project.version
}
}
}
子项目A build.gradle
archivesBaseName = 'AAA'
version = '1.0.1'
子项目B build.gradle
archivesBaseName = 'BBB'
version = '1.0.2'
我想要的是在根项目上运行gradlew build
之后,在项目A和B的清单文件中,分别有Name: AAA Version: 1.0.1
和Name BBB version: 1.0.2
。
但是我得到的是Name是项目的名称:A
,而Version是unspecified
...
Name: A Version: unspecified
答案 0 :(得分:2)
您需要将subproject
配置闭包包装在projectsEvaluated
回调闭包中:
gradle.projectsEvaluated {
subprojects { subproject ->
jar {
manifest {
attributes Name: subproject.archivesBaseName,
Version: subproject.version
}
}
}
}
为什么?,因为在根父项目中执行subproject
配置关闭时(在配置阶段),来自archiveBaseName
和version
属性的值来自子项目尚未评估,因此清单属性的jar
配置不正确。在评估完所有项目后,需要设置此配置==>为此使用projectsEvaluated
生命周期挂钩。