3

Mavenマルチモジュラープロジェクトがあります。構造は次のようになります。

-modulA         (Main project)
   - pom.xml
-parentModul    (Aggregator)
   - pom.xml
   - ModulB     (Integration Test Project)
       -pom.xml

パッケージ定義は次のようなものです。

<project ...>
<modules>
    <module>../modulA</module>
    <module>ModulB</module>
</modules>


モジュラスの1つ(ModulA)は同じ階層レベルを持ち、もう1つは親モジュラスにあります。Jenkinsにジョブを追加して、すべてを自動的にビルドしようとしています。(クリーンパッケージ)。

parentModulが他のモジュールを見つけてプロジェクトをビルドするジョブをどのように構成する必要がありますか?

4

3 に答える 3

2

別のアグリゲーターを追加します。modulA と parentModul を同じディレクトリの 1 つ上のレベルに配置し、次のように別の pom を追加するだけです。

aggregator/
|- modulA/
|  |- pom.xml
|- parentModul/
|  |- modulB/
|  |  |- pom.xml
|  |- pom.xml
|- pom.xml

aggregator/pom.xml で、modules セクションを次のように定義します。

<project ...>
    <modules>
        <module>modulA</module>
        <module>parentModul</module>
    </modules>
</project>
于 2011-10-28T08:01:19.320 に答える
1

1 つの解決策は、SVN Externals を使用して、異なる svn サーバー間であっても、非常識な SVN 構造から適切な Maven プロジェクト ワークスペースを組み立てることです。svn external の使用は、Maven リリース プラグインおよび特定の構成での CI の SCM ポーリングで問題が発生するため、理想的なソリューションではありません。彼らはあなたに言う:「あなたはsvn externalsを使うべきではありません」と人生をより困難にします。しかし、脚のギプスや松葉杖もそうですが、脚 (または fubar である svn 構造) を骨折した場合、不便さは気にしません。

SVN 構造と目的のワークスペース構造に応じて、これを行うにはいくつかの方法があります。

  1. svn co modulA
  2. cd modulA
  3. svn propedit svn:externals . 注意: 行末の (curdir) ドットに注意してください!
  4. 次の行を追加します:parentModul http://path.to.your.svn.location.of.parentModul
  5. svn ci -m "親の外部を追加"
  6. svnアップ

svn は、次のワークスペース構造にコードを取得 (およびコミット) します。

modulA/
|  |- pom.xml
parentModul/
|- modulB/
|  |- pom.xml
|- pom.xml
pom.xml

または、新しいディレクトリを SVN 'workplace' に追加し、そこに新しい pom.xml を追加して、svn externals を介して必要なすべてのモジュールを 1 つのレベル (または複数のレベル) に取得することもできます。

于 2013-03-28T14:08:14.610 に答える
0

私の場合、別の親プロジェクトを追加することはできません。ModulA は、他とは別に SVN で既にチェックされています。

moduleAこれは、<modules>セクションの挿入がおそらく間違っていることを示しています。ライフサイクルが異なる場合moduleAは、依存関係として含める必要があります。

于 2011-10-28T14:15:22.977 に答える