3

war オーバーレイを使用するマルチモジュール プロジェクトがあり、スナップショットを頻繁に展開する継続的統合サーバーがあります。mvn compileCI サーバーがデプロイを行った直後に行う場合、ビルドはローカルの変更または CI の変更を取得しますか? ローカルで変更した war オーバーレイをプロジェクトに強制的に使用させるにはどうすればよいですか? それinstallができると思いますが、CI サーバーが新しいタイムスタンプのバージョンをビルドするとどうなるでしょうか。どちらを使用しますか?

これは私が持っている多くの質問のほんの一部であり、maven のドキュメントで信頼できる回答を見つけることができません。しかし、たとえ私がおそらくここに戻ってきて、誰かにドキュメントをよりよく説明するように頼むことができたとしても:Pだから、依存関係を見つけるためにmavenが使用する順序/ロジックは何ですか?

4

3 に答える 3

3

Maven に関する限り、戦争オーバーレイから生成されたアーティファクトは、さらに別のアーティファクトになります。

CI サーバーがデプロイを行った直後に mvn コンパイルを実行すると、ビルドはローカルの変更または CI の変更を取得しますか?

これは、設定ファイルのスナップショット updatePolicy に依存します。デフォルトでは、毎日に設定されています。詳細はこちら: http://maven.apache.org/settings.html#Repositories

ローカルで変更した war オーバーレイをプロジェクトに強制的に使用させるにはどうすればよいですか?

スナップショットの updatePolicy をnever (または @matsev が提案する -o オプション) に変更します。これは、使用している SNAPSHOT 依存関係が常にローカル バージョンになることを意味します。この updatePolicy を使用してリポジトリから最新のものを強制的に取得するには、-U オプションを使用します

インストールでそれができると思いますが、CI サーバーが新しいタイムスタンプのバージョンをビルドするとどうなるでしょうか。どちらを使用しますか?

はい、インストールは基本的にアーティファクトをローカル リポジトリ (.m2 フォルダー) にデプロイします。次に、updatePolicy に応じて、maven はローカルにデプロイされたアーティファクトとリポジトリ アーティファクトを比較します。updatePolicy がalwaysに設定されている場合、リポジトリのタイムスタンプが新しい場合、maven は常にリポジトリを取得します。同じことがDailyにも当てはまりますが、Maven はタイムスタンプDailyのみを比較します。

Mavenのドキュメントで信頼できる回答が見つかりません。

完全に同意する。悲しいことに、私はこれらのほとんどを部分的に経験を通じて理解しています.

于 2013-06-12T15:54:12.090 に答える
1

-o( --offline) オプションを使用して、Maven にローカル ファイルを強制的に使用させることができます。

mvn -o clean install 

参照については、 Mavenコマンドラインオプションを参照してください(または単に実行mvn -h)。

于 2013-06-11T19:05:38.673 に答える
0

プロジェクトの依存関係が pom.xml で宣言されていることを知っています。Apache Maven は、リポジトリの概念を使用して JAR ファイルを保持します。リポジトリには、ローカル リポジトリとリモート リポジトリの 2 種類があります。これは、maven/conf ディレクトリの settings.xml または pom.xml 自体で定義できます。mvn install コマンドを実行して Maven ビルド プロセスを開始すると、最初にローカル リポジトリで依存関係 JAR が検索されます。見つかった場合は、リモート リポジトリに移動して、対応するバージョンの JAR ファイルをダウンロードし、ローカル リポジトリにも保存します。 . 覚えておく価値のあることがもう 1 つあります。これは、依存関係のタイプです。通常の安定バージョン 1.2 とは対照的に、依存関係の一部として 1.2-SNAPSOT などの SNAPSHOT JAR を含めた場合

于 2013-09-03T14:30:28.000 に答える