我正在研究一組使用Gradle作爲構建工具的項目。這不是一個多項目設置,儘管我希望能夠在每個項目中重用一些常見的Gradle腳本,以便與項目相關的一致性。如何跨項目重用Gradle定義
例如,對於Java組件,我希望生成的JAR文件中的清單文件具有相同的信息。特別是,所有項目將具有相同的主版本和次版本號,而補丁版本將專門針對項目。
這裏是我試過到目前爲止:
master.gradle
- 跨項目
group 'com.example'
ext.majorVersion = 2
ext.minorVersion = 3
ext.patchVersion = 0; // Projects to override
def patchVersion() {
return patchVersion;
}
apply plugin: 'java'
jar {
manifest {
attributes 'Bundle-Vendor': 'Example Company',
'Bundle-Description': 'Project ABC',
'Implementation-Title': project.name,
'Implementation-Version': majorVersion + '.' + minorVersion + '.' + patchVersion()
}
}
build.gradle
共享 - 對於項目之一
apply from: 'master.gradle'
patchVersion = 3
task hello {
println 'Version: ' + majorVersion + '.' + minorVersion + '.' + patchVersion
}
如果我從運行gradle hello jar
在命令行中,我從hello
任務獲得Version: 2.3.3
。但是,JAR文件清單包含2.3.0
這不是我想要的。我如何獲得正確的補丁版本到清單中?更一般地說,我如何讓項目向主腳本提供信息?
你需要構建它作爲一個插件。 –
你可以提供更多的細節嗎?主腳本是插件嗎?如果是這樣,你能指出相關的doco嗎?謝謝。 – dave
請參閱https://docs.gradle.org/4.1/userguide/custom_plugins.html。特別是關於「從構建中獲得輸入」的部分。 –