2011-12-09 14 views
4

私はMavenでプロジェクトをリリースしようとしています。私のプロジェクトPOMには-SNAPSHOTの依存関係が含まれているので、自動的にリリースを実行するには、 "maven-release-plugin"の目標に基づいて、次のmavenコマンドを使用します:mvn release:prepare-with-pom依存関係を解放して解決するためのプロジェクトのpom.xmlを準備します。-SNAPSHOTのバージョンは手作業で編集することなく自動的に作成されます。 残念ながら、私はこれがコマンドラインからのインタラクティブモードでのみ動作していることを発見しました。私はこれが手動でのやりとりなしにできるのではないかと思っています。私はCIサーバとしてBambooを使用しており、これを計画に入れてこのプロジェクトを自動的に実行したいと考えています。 --non-interactiveまたは-B引数が機能していない、実際に私が-Bまたは--non-interactive引数を使用していて、Mavenの目標が失敗している場合Mavenリリース:非対話型で準備する

出力mvnリリース:ポンポンはこれです:

H:\APPS\dev\cmtest\test-dependency\trunk>mvn release:prepare-with-pom -DdryRun=t 
rue 
[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building test-dependency 0.0.4-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-release-plugin:2.0:prepare-with-pom (default-cli) @ test-depend 
ency --- 
[INFO] Resuming release from phase 'check-dependency-snapshots' 
[INFO] Checking dependencies and plugins for snapshots ... 
There are still some remaining snapshot dependencies.: Do you want to resolve th 
em now? (yes/no) no: : yes 
Dependency type to resolve,: specify the selection number (0:All 1:Project Depe 
ndencies 2:Plugins 3:Reports 4:Extensions): (0/1/2/3) 1: : 1 
Resolve Project Dependency Snapshots.: '${artifactGroup}:${artifactId}' set to releas 
e? (yes/no) yes: : yes 
What is the next development version? (0.1.3-SNAPSHOT) 0.1.3-SNAPSHOT: : 
'${artifactGroup}:${artifactId1}_1' set to release? (yes/no) yes: : yes 
What is the next development version? (0.0.2-SNAPSHOT) 0.0.2-SNAPSHOT: : 
'${artifactGroup}:parent-pom' set to release? (yes/no) yes: : yes 
What is the next development version? (0.0.3-SNAPSHOT) 0.0.3-SNAPSHOT: : 
What is the release version for "test-dependency"? (${artifactGroup}:${artifactId1}_2) 0.0.4: : 
What is SCM release tag or label for "test-dependency"? (${artifactGroup}:${artifactId1}_2) test-dependency-0.0.4: : 
What is the new development version for "test-dependency"? (${artifactGroup}:${artifactId1}_2) 0.0.5-SNAPSHOT: : 
[INFO] Transforming '${artifactId1}_2'... 
[INFO] Updating ${artifactId1}_1 to 0.0.1 
[INFO] Updating ${artifactId1} to 0.1.2 
[INFO] Generating release POMs... 
[INFO] Generating release POM for 'test-dependency'... 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 

だから、あなたは私が非対話モードでは、このMavenのコマンドを実行するためにトリックを見つけるために助けてくださいすることができます

? ありがとうございました

答えて

1

あなたのポームはスナップショットリリースを参照していますが、私は非インタラクティブが可能ではないと考えています。

ライブラリーが自分の足元から変化する可能性があるため、スナップショットに依存するライブラリーを解放することは非常に危険です。あなたのライブラリを使用している人は誰でも、同じSHAを使って同じジャーを得ていると仮定しますが、実際にはそうではありません。だからこそ、Mavenはこれをほぼ不可能にしています。

依存関係をリリース版に移動することに集中することをお勧めします。そうでない場合は、ライブラリをスナップショットとして保持することをお勧めします。ライブラリをスナップショットとして保管することは、使用しているライブラリが知識なしに変更できることをクライアントが少なくとも意識していることを意味します。

+0

はい、私はそれを考慮しませんでした。アイデアは、私はすべての子プロジェクトのバージョンを保持する親pom.xmlがあるということです。私はこの方法を選択して、各リリースでどのバージョンの子どもがどのバージョンのプロジェクトを行っているかを常に知ることができます。 私が持っている問題はリリースプロセスに関するものです。なぜなら、子プロジェクトをリリースしたいとき、親プロジェクトのリリースバージョンを尋ねるからです。だから私はここで循環的な問題があります:私は自分の子プロジェクトのバージョンを宣言しておく必要があるので、最初はparent.pomを解放できません。親リリースが必要なので、最初に子どもをリリースすることはできません – Asgard