2

Ant でビルドされた Java EE 5 プロジェクトがあり、これを Maven ビルド インフラストラクチャに移植しています。

バージョン管理と Jenkins ビルド サーバーとして SVN を使用しています。

奇妙なことに、一部の「パッチ」配信には、最後のメジャー バージョン以降に変更されたソースとバイナリのみが含まれており、これらは「パッチ デルタ」と呼ばれます。この差分は、メジャー バージョンのバイナリに適用されます。

これを実現する方法は、メジャー バージョンの最後のリビジョンを記録し、そのリビジョン以降に svn ログを実行して変更されたソースのリストを取得し、ソース名 (svn ログからの出力) と対応するソース名を一致させるカスタム スクリプトを使用することです。その後、「デルタ構造」にコピーされます。

カスタム スクリプトを新しい Maven プロジェクト構造に適応させる前に、これらすべてを行う Maven の方法があるかどうか知りたいですか?

また、この「デルタ構造」を生成するための他のアイデアも大歓迎です。

4

2 に答える 2

0

Ant から Maven への移行、デルタ ビルドという同じ状況で、このような Maven プラグインの開発に参加したことがあります。

そのようなプラグインがオープンソースに存在しない理由の 1 つは (Maven の哲学との矛盾に加えて)、パッチ (デルタ) のアセンブリのルールがすべての具体的な状況に非常に固有であるためだと思います。たとえば、私たちのパッチ構造は 12 以上のサブディレクトリで構成されており、すべてパッチに含めるための異なるルールがあり、マージの影響も受けていました。

しかし、私の意見では、古い Ant スクリプトをサポートする代わりに Maven プラグインを作成するという決定は正しかったと言えます。Ant コードのテストとサポートにはかなりの費用がかかり、Maven との統合はさらに複雑になります。一方、単純な Java で記述された Maven プラグインを単体テストと統合テストでカバーすることはそれほど難しくないため、リグレッションを簡単に見つけることができます。

So, if you plan to keep requirement of making delta builds, I recommend you to invest time in writing custom Maven plugin.

We used SVNKit library for integration with SVN to simplify development (no need to parse text output of svn log) and make our plugin environment-independent (no need to have svn binary in PATH).

于 2013-05-06T21:39:21.017 に答える