2

Jenkins (バージョン 1.534) でビルドするには、マルチモジュール Maven プロジェクトをセットアップする必要があります。各モジュールは独自の Git リポジトリにあり、互いに完全に分離されています。

/home/git/ProjectDomain.git
/home/git/ProjectWAR.git

ローカルで、独自の親 POM.XML を構築し、各プロジェクトをサブフォルダーに配置しました。

<modules>
    <module>ProjectSupport</module>
    <module>ProjectWAR</module>
</modules>

これはローカルでは機能しますが、Jenkins では機能しません。これを行う方法を示すオンライン ドキュメントが見つからないようです。誰でもこれについての良い参照を持っていますか?

編集:私が使用しようとしている現在の親 pom は /ProjectWAR フォルダーにあり、次のようになります。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.company.project</groupId>
    <artifactId>Project</artifactId>
    <packaging>pom</packaging>
    <name>Project</name>
    <version>1.0</version>

    <modules>
        <module>../ProjectDomain</module>
        <module>../ProjectWAR</module>
    </modules>
</project>

ここでもローカルで動作しますが、Jenkins では動作しません。現在発生しているエラーは次のとおりです。

[FATAL] Non-readable POM /var/lib/jenkins/jobs/Project - Integration/workspace/../ProjectDomain/pom.xml: /var/lib/jenkins/jobs/Project - Integration/workspace/../ProjectDomain/pom.xml (No such file or directory) @ 
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:364)
at hudson.maven.MavenEmbedder.buildProjects(MavenEmbedder.java:361)
at hudson.maven.MavenEmbedder.readProjects(MavenEmbedder.java:331)

どういうわけか、ProjectDomain リポジトリがどこにあるかを伝える必要がありますが、これを行う方法がわかりません。

4

2 に答える 2

2

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

  pom.xml (parent)
   +--- module-1 (pom.xml)
   +--- module-2 (pom.xml)

親は git リポジトリのルートになります。これは、そのようなプロジェクト (Eclipse または任意の IDE) で作業し、さらに Jenkins で作業する際に、あなたの人生を単純化します。

于 2013-10-25T09:28:49.997 に答える
0

jenkins git プラグインが同じオプションを提供するかどうかはわかりませんが、svn を介して Maven モジュールを親から分離しておくことができます。

この構造を意味する:

parent
module-1
module-2

そしてそのようなpom.xml:

<modules>
   <module>../module-1</module>
   <module>../module-2</module>
</modules>

問題は、ジェンキンスがジョブに次のパスを使用することです。

<jenkins_home>/jobs/<parent-jobname>/workspace/

そのため、maven は次のモジュール poms を探します。

<jenkins_home>/jobs/<parent-jobname><module-name>

ジョブ svn-configuration では、完全に独立したリポジトリ パスでチェックアウトするモジュールをさらに定義できます。さらに、親のローカル サブフォルダーを定義し、親 pom の modules-section で使用したフォルダーと一致するモジュールごとに 1 つ定義する必要があります。したがって、次の構造が得られます。

<jenkins_home>/jobs/<parent-jobname>/workspace/<parent-name>/pom.xml
<jenkins_home>/jobs/<parent-jobname>/workspace/module-1/pom.xml
<jenkins_home>/jobs/<parent-jobname>/workspace/module-2/pom.xml

そして、それが Maven が期待することです。

于 2014-04-02T10:50:17.257 に答える