問題タブ [versions-maven-plugin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
maven - release+versions プラグインでリリース手順を完全に自動化
Maven の第一人者コミュニティが次のタスクで私を助けてくれれば素晴らしいことです。
Hudson での Maven モジュールのリリース プロセスを、リリース プロセスがバッチ モードで実行されるように自動化したいと考えています (コンソールから何も要求する必要はありません)。現在、私は一般的な手順を使用していますrelease:prepare
(<preparationGoals>versions:update-parent clean verify</preparationGoals>
コミットする前に親を最新バージョンに更新する)+ release:perform
. ただし、Mavenに次のことをしてもらいたい:
準備段階のいつか:
groupId
現在のモジュールと親のに一致するすべての依存関係について-SNAPSHOT
、リリースされたバージョンに置き換えます (例:versions:use-releases -Dincludes=???
)。
リリース後のいつか:
groupId
現在のモジュールと親のに一致するすべての依存関係について、リリース バージョンをバージョンに置き換えます-SNAPSHOT
(例:versions:use-latest-snapshots ...
)。
例:
モジュールがタグ付けされる前は、次のように変換されます。
リリースが成功すると、次のように変換されます。
の混合が必要な気がします。
versions:use-releases scm:commit release:prepare release:perform versions:use-latest-snapshots scm:commit
しかし、これを行う最善の方法が何であるかはわかりません。特に、可能な限りコミットを少なくするとよいでしょう。難しいのは、バージョン チェックのreparationGoals
後に実行されることです。-SNAPSHOT
説明されているプロジェクトは、親 POM が を介してその子を参照していないという意味で、マルチモジュール プロジェクトではありません<modules>
。SCM 構造は次のとおりです。
依存関係は次のとおりです。
プロジェクトの親 POM ( myproject-parent
) はめったにリリースされないため、最初にリリースされます。次にmyproject-api
(必要に応じて)、次にmyproject-impl
.
eclipse - EclipseのバージョンMavenプラグイン
EclipseプロジェクトにVersions-Maven-Pluginを追加するにはどうすればよいですか?
メニューオプションを試しましたAdd Plugins
が、プラグインが見つからないようです。
maven - 最新の成果物バージョンを取得する前に、versions-maven-plugin update maven-metadata-*.xml update を作成する方法は?
versions-maven-pluginを使用して、さまざまなネクサス リポジトリにある Maven アーティファクトの最新リリース/スナップショット バージョンを自動的に見つけます。
プラグインは、ローカル リポジトリのmaven-metadata-$REPO.xml (ここで、$REPO はリポジトリの ID) ファイルを使用して、アーティファクトの最新バージョンを見つけているようです。
多くの場合、アーティファクトをmvn:releaseする必要があり、その直後に、リリースされたばかりのアーティファクトに応じて別のアーティファクトを更新する必要がありますが、最新バージョンがそれらの xml ファイルにリストされているため、 versions-maven-pluginはそれを見つけることができません。実際にはnexusに存在しますが。
どうすれば問題を解決できるかについて、アイデアをお持ちの方がいらっしゃることを願っています。御時間ありがとうございます。
versioning - version-maven-pluginはnexusの最新バージョンを取得しませんか?
私はversions-maven-pluginを使用して、ローカルおよびネクサスリポジトリから最新のリリース/スナップショットバージョンを取得し、 mavenプロジェクトを更新しようとしています。このプラグインを実行してバージョンを更新すると、次の動作に気づきました。
nexusに新しいバージョンがあることはわかっていますが、ローカルリポジトリにはありませんが、最新バージョンは見つかりませんが、ローカルリポジトリからの最新バージョンが見つかります。更新したいアーティファクトのローカルリポジトリからすべてのmaven-metadata*.xmlファイルを削除すると、最新のmaven-metadata * .xmlファイルがダウンロードされ、最新バージョンが正しく検出されます。
すべてのMavenAPIで2.0.6を使用しており、更新メカニズム全体を駆動するメソッドは、インターフェイスArtifactMetadataSourceからretrieveAvailableVersions()であり、 MavenMetadataSourceによって実装されていることがわかります。
私の質問 このプラグインのコードを変更して、常に最新のmaven-metadata * .xmlファイルをダウンロードし、最新バージョンを取得するにはどうすればよいですか?または、これを実現できる他の信頼できる方法がある場合。
御時間ありがとうございます。
maven - バージョン プラグインを使用して、新しいリリース後に Maven プロパティを更新する
Maven/jenkins のマルチモジュール プロジェクトに問題があります。たとえば、私の構造は次のようになります。
たとえば、ModuleA には、プロパティとしてのみ定義され、ProjectA のプロパティ セクションから継承されるバージョンを除いて、ModuleA の pom で定義されている ProjectB の何かに対する依存関係があります。
リリース プロセスを自動化して、すべての pom のバージョンの手動更新をすべて取り除きたいと考えています。したがって、ProjectB をリリースした後、ProjectA のすべての参照をバンプする必要があります。
EDIT より正確に、ProjectAのリリースを含める必要があるProjectBをリリースしたいと思います(依存関係のため)。ProjectAの新しいスナップショットには、最新のProjectBへの参照が必要です。
同じ pom で依存関係とバージョン番号を指定すると、maven プラグインのバージョンはこれをうまく実行します。ご覧のとおり、私の問題は、バージョンプラグインが ProjectA の pom のプロパティフィールドをチェックしようとすると、プロパティを依存関係に関連付けることができないことです (私は推測しています)。また、ModuleA の pom の依存関係を更新する必要があることがわかるため、versions プラグインは有効な pom を参照していると思います。そこで定義されていないため、更新できません。
私のプロパティを親pomに保持できるソリューションが必要です。
ありがとう
maven - Maven バージョン プラグイン: バージョンはどこと比較されますか?
Maven バージョン プラグインについて読んでいます: http://mojohaus.org/versions-maven-plugin/examples/advancing-dependency-versions.html
この目標のために、「versions:use-next-releases は、新しいリリースであった SNAPSHOT 以外のすべてのバージョンを pom で検索し、それらを次のリリース バージョンに置き換えます。」
「新しいリリースでした」とはどういう意味ですか?新しいリリースはどこで検索されますか? 新しいバージョンの中央リポジトリをチェックしていますか?
maven - バージョン プラグインは子モジュールを更新せず、親だけが更新されます
次のように定義されたモジュールを持つ親 pom があります。
親 pom.xml
子モジュールの pom ファイルは次のとおりです。
proj2 pom.xml
proj1 pom.xml
しかし、バージョン プラグインを使用すると、モジュールではなく、親のバージョン番号が設定されるだけです。これが私が使用しているコマンドです:
出力は次のとおりです。
サブモジュールはスキップされています。親だけでなく、サブモジュールも更新できるようにするにはどうすればよいですか?
更新:子モジュールからバージョンタグを削除しようとしたため、子モジュールは次のようになりました:
ただし、子 pom ファイルではバージョン番号が更新されていません。
更新:これが私がこのプロセスがどのように機能すると思うかです。お気軽に改訂を提案してください:
理論的には (私はこれをテストしていません)、ネストされたファイル構造で Maven は、ゴール 'ons:set -DnewVersion=1.0.2-SNAPSHOT' が実行されると、各子モジュールの個々のバージョン番号を更新します。
ただし、フラット ファイル構造では、親モジュールのバージョンが同じ場合、子モジュールでバージョン番号を指定する必要はありません。これは、子のバージョン番号が設定されていない場合、親のバージョン番号が使用されるためです。したがって、親モジュールのすべての子モジュールを更新するには、親モジュールのバージョン番号を更新するだけです。すべての子モジュールにバージョン番号が設定されていない場合、親モジュールと同じバージョン番号になります。
java - Maven バージョン プラグイン、制限バージョン:更新プロパティの損傷
モジュールが依存関係を共有するマルチモジュールmavenプロジェクトがあります。共有とは、同じ依存関係を使用することを意味します。ただし、各モジュールは依存関係自体を宣言します。健全性を維持し (ええ、maven、健全性、私は知っています)、すべてのモジュールが同じバージョンの依存関係を使用するようにするために、親 pom はバージョン番号でプロパティを宣言します。
そしてすべてのモジュールはそれを次のように使用します:
依存関係のバージョンを 1 か所で変更できるので、このセットアップには非常に満足しています。
今、私は自分で維持している依存関係をたくさん持っています。それらのリリースは自動で非常に簡単です。基本的には次のとおりです。
今、私はさらに自動化したいと思っており、メインプロジェクトで実行しています:
(基本的に、「mvn versions:use-releases」も実行して、必要に応じて通常の依存関係を変更しますが、この質問の範囲外です)。
この update-properties の実行後、メイン プロジェクト pom のプロパティはリリースを指します (これは良いことです)。ただし、モジュールがプロパティを使用して他の依存関係のバージョンを定義し、それらのプロジェクトでより新しいバージョンが利用可能である場合、それらのプロパティも変更されます。
update-properties によるダメージを制限する方法はありますか? versions:use-release はincludesプロパティを使用するため、私のアーティファクトでのみ使用できます。update-properties に類似したものは見つかりません。
親以外のすべての pom を元に戻し、それだけをコミット/プッシュできますが、エレガントに見えません。
maven - Maven リリースとバージョン Maven プラグイン
スナップショット/リリースを行うときの依存関係の番号付け/バージョン管理戦略は何ですか?
15 人の開発者のチーム、20 の Maven 親プロジェクト = 子モジュール POM を含む合計 70 以上の POM。現在、多くの依存関係があり、これら 70 のほとんどがどちらかに依存しています。
過去:
すべての POMS は1.0.0-SNAPSHOT
、バージョンと依存関係タグの下にありmvn deploy
ます。
現在:
mvn release
最近やり始めました。そのため、20 の親 POM はすべて現在1.0.1-SNAPSHOT
、リリース バージョン1.0.0
はすべて Nexus にあります。すべての<dependencies>
タグは現在、1.0.0
問題:
開発者は、リリース バージョンを指したくありません。1.0.X-SNAPSHOT
不安定かどうかに関係なく、ピアから最先端の開発バージョンが必要です。
SCMは、スナップショット バージョンを指しているため失敗する週に 1 回RELEASE
行う必要があるため、バージョンのみを指すことを望んでいます。mvn release
質問:
これでpluginのバージョンはわかりましたが、問題は、POM に何を入れて、独自のバージョンのmvn versions:
コマンドを実行することで双方が満足できるようにするかということです。できれば、POM は SNAPSHOTS を指し示す必要があります。そうすれば 15 人が満足し、SCM がリリースを行うときに、彼は a を実行できmvn versions:something
、すべてがRELEASE
の代わりにバージョンに変換されますSNAPSHOTS
。次に、開発者向けのスナップショットに戻ります。
maven - Maven versions:use-latest-versions ゴールを実行するときの異なる動作
私が実行しているコマンドは次のとおりです。
私の pom には 1.2.3-5-SNAPSHOT などのバージョンがあり、最新のリリース バージョンに更新したいと考えています。たとえば、1.2.3-7、または 1.2.3-5-SNAPSHOT がまだリリースされていない可能性があり、これは最新バージョンが 1.2.3-4 であることを意味します。
ローカルの Windows マシンで maven コマンドを実行すると、バージョン プラグインは必要に応じて機能しますが、リモートの Linux ボックス (本当に必要な場所) で実行すると機能しません。
私のローカルボックスは次のように表示されます:
ローカルの Windows マシンで maven コマンドを実行すると、バージョン プラグインは必要に応じて機能しますが、リモートの Linux ボックス (本当に必要な場所) で実行すると機能しません。
リモートボックスには次のように表示されます。
実行時:
両方のボックスの出力は、同じバージョン番号を示しています。
ローカルマシンと同じ動作を得る方法を知っている人はいますか? または、さらに調査する方法について何か提案はありますか?