gradle获取子主题名称、版本

gradle获取子主题名称、版本,gradle,Gradle,根项目build.gradle subprojects { jar { manifest { attributes Name: project.archivesBaseName, Version: project.version } } } archivesBaseName = 'AAA' version = '1.0.1' archivesBaseName = 'BBB' ver

根项目build.gradle

subprojects {
    jar {
        manifest {
            attributes Name: project.archivesBaseName,
                    Version: project.version
        }
    }
}
archivesBaseName = 'AAA'
version = '1.0.1'
archivesBaseName = 'BBB'
version = '1.0.2'
子项目A build.gradle

subprojects {
    jar {
        manifest {
            attributes Name: project.archivesBaseName,
                    Version: project.version
        }
    }
}
archivesBaseName = 'AAA'
version = '1.0.1'
archivesBaseName = 'BBB'
version = '1.0.2'
子项目B build.gradle

subprojects {
    jar {
        manifest {
            attributes Name: project.archivesBaseName,
                    Version: project.version
        }
    }
}
archivesBaseName = 'AAA'
version = '1.0.1'
archivesBaseName = 'BBB'
version = '1.0.2'
我想要的是在根项目上运行
gradlew build
之后,在项目A和B的清单文件中,有
Name:AAA版本:1.0.1
Name BBB版本:1.0.2
。 但我得到的是项目名称:
A
,版本是
未指定的


Name:A版本:未指定

您需要将
子项目
配置闭包包装在
项目评估
回调闭包中:

gradle.projectsEvaluated {
    subprojects { subproject ->

        jar {
            manifest {
                attributes Name: subproject.archivesBaseName,
                        Version: subproject.version
            }
        }
    }
}
为什么?因为在根父项目中执行
子项目
配置关闭时(在配置阶段),子项目的
archiveBaseName
version
属性值尚未计算,因此清单属性的
jar
配置不正确。当所有项目都已评估时,您需要设置此配置==>为此使用
projectsEvaluated
lifecyclehook