1

マルチモジュール プロジェクトの分岐方法について疑問があります。CVS に Maven プロジェクトがあり、ブランチを作成するつもりです。問題は、私が与えられた提案された解決策にあまり満足していないということです. 変更しているモジュールではなく、プロジェクト全体を分岐することになっています。

それは大丈夫ですか?

つまり、問題のこのモジュールはプロジェクト自体である可能性がありますが、クライアントのすべてのプロジェクトを 1 つの Maven プロジェクトのモジュールとしてラップするためにモジュールとして持っています。

ありがとう!

4

3 に答える 3

0

プロジェクト全体を分岐する必要があります。これは、プロジェクトが単純で問題が発生しないためです。さらに、マルチモジュールプロジェクトの単一モジュールを分岐するだけでは、そのようなもののリリースを行う際に問題が発生し、モジュール間の同期が失われます。

于 2012-09-06T13:54:21.200 に答える
0

私自身、このことについてしばらく考えました。何百人もの人々がこの問題に直面しているに違いないので、これは非常に驚くべきことです。

私の経験はmaven + cvs + jenkinsのコンテキストにありますので、ここで言及する利点のいくつかは実際にはjenkinsのコンテキストでの利点であることを覚えておいてください

私の見解では、実際に異なるコード (基本的にはチャドの #2) を持つサブモジュールのみを分岐する必要があります。それ以上に、正規の Maven マルチモジュール構造を微調整すると、分岐とビルド全体がはるかにうまくいくことがわかりました。具体的には、アグリゲーター POM を、通常は 1 つの POM にまとめられている親 POM から分離します。これにより、ビルドシステムで各サブモジュールと親POMを完全に分離してビルドし、自由に分岐できるようになりました。それらを分離しないと、ジェンキンなどのシステムは、分岐できない独自のサブモジュールを作成します。

基本的に私の構造は次のようになります

root
--pom.xml (aggregator)
--parent
----pom.xml
--subModA
----pom.xml
--subModB
----pom.xml

完全を期すために、構造全体を分岐する際の私の最大の問題は、いくつかの分岐の一部が同じであることです。これにより、依存関係が複雑になります。たとえば、subModA の v1.1 には subModB の v1.1 が必要であり、subModB v1.0 では失敗しますが、実際には 1.0 は変更がないため完全に問題ありません。一方、変更されなかったモジュール (私の例では subModB) のバージョンを分岐してもインクリメントしない場合、まったく同じコードの複数のスナップショットをデプロイすることになります。この無駄な展開は、不要なアクションを引き起こす可能性があります (たとえば、テストや QA を考えてみてください)。

于 2012-12-04T15:53:51.840 に答える
0

私は同じことについて考えてきました。そして、Maven ユーザー リストでこの質問をしようとさえしましたが、答えはほとんど得られませんでした。これが私が最良の答えであると信じているものです。

まず、maven ビルドの世界のいくつかの現実。

1) マルチモジュール ビルドは、一連のものをまとめてビルドするための優れた方法です。しかし、「AはBの前にビルドする必要がある」という単純なユースケースで必要とされるよりも、モジュールの緊密な結合であると思います-このより緩い結合は、Jenkinsトリガーによってより適切に処理されます。

2) マルチモジュール ビルドはディレクトリ ツリーとして構造化する必要がありますが、必ずしもこれが必要なわけではありません。ソース管理構造、分岐、およびビルド ロジックの間の結合を作成します。

3) 分岐は、ポイント 1 と 2 のすべて、およびソフトウェアの配信/リリース モデルに関連する複雑なものです。また、開発者にとっても悪夢になる可能性があります。. .

私の提案(私自身とあなたのため):

1) ビルド、ソース管理構造、ブランチなどを作成しないでください。. . 私たちの一連の要件を手元に置いてください。ソフトウェア エンジニアリングの他の側面と同様に、要件は必須です。この領域では、コーディングよりも簡単にスキップされるようです。

2)実際に並行開発を行う必要のないものは分岐しないでください。ビルド構造によって、実際には並行開発が見られないコードを分岐する必要がある場合は、何かが間違っています。

3) 要件を取得したら、考えられるビルド、SCM、リリース ソリューションをいくつか作成し、それらを紙の上で説明して、分岐とビルドがどのように行われるかを確認します。

これはコメントであった可能性がありますが、実際には単純な「答え」があるとは思いません。したがって、これで十分です。

于 2012-09-06T16:06:52.143 に答える