1

システムをリリースするために、他の多くのプロジェクトに対して uploadArchives を呼び出すリリース プロジェクトを作成しています。

私のプロジェクトには、次のファイルがあります。

settings.gradle

include '../proj-a',  '../proj-b'

build.gradle

task releaseSystem() {
     // what goes here?
}

gradle releaseSystemreleaseSystem タスクの内容は、サブ プロジェクトごとに uploadArchives を呼び出して実行できるようにする必要がありますか?

いくつかのオプションを試しましたが、これまで成功したものはありません。

あなたが提供できる洞察をありがとう。

答え

私の問題に対してgradleが提供する優雅な解決策には、常に感銘を受けています。これが私の最終的な解決策です(Peterが以下で指摘したように):

settings.gradle

include 'proj-a',  'proj-b'
project (':proj-a').projectDir = new File(settingsDir, '../proj-a')
project (':proj-b').projectDir = new File(settingsDir, '../proj-b')

build.gradle

task releaseSystem() {
    dependsOn {
        [
            subprojects.build,
            subprojects.uploadArchives
        ]
    }
}

私のリポジトリはmavenリポジトリであるため、最初に「../proj-a」をsettings.gradleに含めたときに、無効なartifactId ../proj-aでpomが生成されたことに注意してください。システムが poms を正しくまとめ、uploadArchives タスクを正常に完了するために、settings.gradle を上記の形式に変更する必要がありました。

4

1 に答える 1

3

すべてのサブプロジェクトにuploadArchivesタスクがあると仮定します。

task releaseSystem {
    dependsOn { subprojects.uploadArchives }
}

これはサブプロジェクトのテストを実行しないことに注意してください。

于 2013-07-12T06:12:38.183 に答える