1

バックグラウンド

  1. 標準のsvnレイアウトの1つのトランクと1つのブランチ、/trunkおよび/branches/prod
  2. Mavenプロジェクトの約20モジュール
  3. トランクをコンパイルしたいときは、と入力するだけですcd trunk; mvn clean package。ただし、各モジュールをコンパイルします。プロダクションをビルドする必要がある場合も同様です。
  4. センターメイヴンリポジトリ

問題

  1. 更新されたモジュールのみをコンパイルできる場合はどうなりますか?実際、可能な場合にのみ、変更されたソースファイルをコンパイルしたいと思います。私はそれがantまたはによって単純なことであることを知っていmakeます。ただし、maven compile常に最初から作成してください。
  2. trunkとprodのpom.xmlは同じartifactIdとバージョンを維持する必要がありますか?トランクとprodが互いにデプロイされたパッケージを上書きするため、同じartifactIdとバージョンはmaven:deployでは機能しません。
4

2 に答える 2

1

mvncompileは常にゼロからビルドされるとは限りません。変更されたJavaファイルのみをコンパイルします。mvncleancompileを実行しない限り。その後、もちろん、すべてのプロジェクトがクリーンアップされ、最初からコンパイルされます。

いつでも必要なプロジェクトにCDを挿入して、それを単独でコンパイルできます。

edit Maven、mvn compileを呼び出すと、コンパイルフェーズまでのすべてのフェーズを常に実行します。プラグインの実行には時間がかかる場合があります。しかし、Javaファイルの実際のコンパイルは必要以上に行われていません。mvn compileを2回実行すると、「すべてのクラスをコンパイルするものがありません」というメッセージが表示されます。

それとも「すべてのファイルが最新です」..?

編集-質問nbr22 つから生成されたアーティファクトが異なるバージョンでないのに、なぜトランクと製品の両方から解放するのですか?はい、異なるバージョンが必要です。トランクにマージして戻す可能性のある実験的なブランチを作成し、それ自体をリリースするつもりがない場合を除きます。その場合、実験ブランチはそれ自体のバージョン番号を必要としません。

于 2012-05-16T07:52:24.893 に答える
1

mvn -am -plオプションを使用して、操作を特定のモジュールに制限することができます。

+-- root (pom.xml)
     +-- client (pom.xml) dep: core
     +-- server (pom.xml) dep: client
     +-- core (pom.xml) 
     +-- cli (pom.xml) dep:core

あなたがするなら

mvn -am -pl server LifeCycle

サーバーモジュールとサーバーで使用されるモジュールのみが適切なライフサイクルで実行されます。

mvn -am -pl cli LifeCycle

この場合、cliモジュールとコアモジュールのみが特定のライフサイクルで実行されます。

于 2012-05-22T12:47:24.370 に答える