6

SVNには、共通の構成を定義する親(アグリゲーターではない)プロジェクトを持つ次のプロジェクト構造があります。親は個別に管理され、解放されます。

trunk
    +parent
        pom.xml
    +project1
        pom.xml
        +project1_1
            pom.xml
        +project1_2
            pom.xml
    +project2
        pom.xml

したがって、基本的に、各実際のプロジェクト(project1、project2)は、そのサブプロジェクトのアグリゲーターとして使用されます。共通の構成設定(Javaコンパイラバージョン、その他のプラグイン)は親に保持され、parentすべてのプロジェクト(project1、project2)でMavenとして使用されます。

親で定義したい設定の1つは、SubversionのSCM URLです(http://svnhost/base/trunk/parent親pom.xmlなど)。

これを行うと、個々のプロジェクトはこの設定を継承しますが、もちろん、パスの相対的な性質を反映していません。project1では、これは次のように解決されhttp://svnhost/base/trunk/parent/ます-私はこれをでチェックしましたmvn help:effective-pom

親に対して解決されるようにSCM接続を指定する方法はありますか?または、個々のプロジェクトでSCM URLを提供する必要がありますか?

4

2 に答える 2

3

${svn.host}やのようなプロパティを使用${svn.path}して scm.url を構築すれば可能です。リリース プラグインには、リリース中にプロパティが置き換えられるバグがありました: http://jira.codehaus.org/browse/MRELEASE-128しかし、バージョン 2.3 以降は修正されたようです。したがって、子 poms はプロパティのみを定義し、scm url は定義しません。

それが役立つかどうかはわかりません。pom.xml に多くの行を保存せず、人々がプロパティを変更しないという危険をもたらします。

親でparent.scm.urlのプロパティを定義し、そのプロパティを子で使用して相対URLを追加する<scm.url>${parent.scm.url}/../myproject</scm.url>場合( )そのプロパティに基づいてscm.urlで相対パスを実行すると、まだ多くを保存しません構成?

親URLを読み取り、現在の作業コピーからURLを読み取るプラグインを作成する必要があることを正確に望んでいると思います(構成されていないため、mavenはそのプロジェクトURLを見つける場所を他に知らないため) ) から相対パスを計算します。すべての pom で scm.url 構成を繰り返すだけと比べると、それは奇妙だと思います。

于 2012-10-30T17:42:37.863 に答える
2

マルチモジュール ビルド内では、プロジェクトのルート レベルで scm 接続を定義するだけで済みます。しかし、プロジェクトのレイアウトは、その正しい設定のようには見えません。親/pom.xml をトランク フォルダーの直下に置いてみませんか? 親を個別にリリースする必要がある場合、これは、親を実際に個別のスタンドアロン Maven プロジェクトにすることを示しています。

于 2012-10-30T16:27:35.010 に答える