それぞれがGradleをビルドツールとして使用する一連のプロジェクトに取り組んでいます。これはマルチプロジェクトの設定ではありませんが、プロジェクトが関連しているため、各プロジェクトで共通のGradleスクリプトを使用して一貫性を持たせたいと考えています。プロジェクト間でグラデル定義を再利用する方法
たとえば、Javaコンポーネントの場合、生成されたJARファイル内のマニフェストファイルに同じ情報が必要です。特に、すべてのプロジェクトのメジャーバージョンとマイナーバージョンは同じで、パッチバージョンはプロジェクト固有です。私はからgradle hello jar
を実行する場合、プロジェクト
apply from: 'master.gradle'
patchVersion = 3
task hello {
println 'Version: ' + majorVersion + '.' + minorVersion + '.' + patchVersion
}
の1のために - - プロジェクト
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
間で共有されるように
master.gradle
を:ここで
は、私がこれまで試したものですコマンドライン、私はタスクからVersion: 2.3.3
を取得します。ただし、JARファイルマニフェストには2.3.0
が含まれていますが、これは私が望むものではありません。マニフェストに正しいパッチのバージョンを取得するにはどうすればよいですか?さらに一般的には、どのようにしてプロジェクトがマスタースクリプトに情報を提供できるのでしょうか?
あなたはプラグインとしてそれを構築する必要があります。 –
少し詳細を教えてもらえますか?マスタースクリプトはプラグインですか?もしそうなら、関連するドコに指摘することができますか?ありがとう。 – dave
https://docs.gradle.org/4.1/userguide/custom_plugins.htmlを参照してください。特に、「ビルドからの入力の取得」に関する節。 –