【问题标题】:How to build two different project in single repository, using jenkins如何使用詹金斯在单个存储库中构建两个不同的项目
【发布时间】:2016-08-25 19:34:10
【问题描述】:

我遇到了一种情况,已经两个多星期了,但我无法解决问题。很抱歉这个问题的描述很长。我想做的是:

我有两个不同的项目,比如AB,我必须使用 Jenkins 构建它们。虽然他们是独立的,但他们一起工作。所以我创建了不同的存储库并将它们称为Repo-ARepo-B,我能够构建它们。

这是一个真正的问题:现在我想从单个存储库一起构建它们。所以我在 Bitbucket 中创建了一个名为 Demo 的存储库,现在我在 Demo 存储库中有两个项目 AB

现在我在Demo 存储库中创建了一个pom.xml 文件,以便我可以将其用作父POM,并且每个项目AB 都有自己的pom.xml

项目演示的pom.xml

<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.demo.parent</groupId>
  <artifactId>Parent</artifactId>
  <packaging>pom</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>Maven Webapp</name>
  <url>http://localhost:8081/nexus/content/repositories/releases</url>

  <!--<url>http://maven.apache.org</url> -->

  <modules>
    <module>A</module>
    <module>B</module>
  </modules>

 <distributionManagement>
    <snapshotRepository>
        <id>my-snapshots</id>
        <name>Internal Repository</name>
        <url>http://localhost:8081/nexus/content/repositories/snapshots</url>
    </snapshotRepository>

    <repository>
        <id>my-releases</id>
        <name>Internal Repository</name>
        <url>http://localhost:8081/nexus/content/repositories/releases</url>
    </repository>
</distributionManagement>

</project>

项目 A 的 pom.xml

<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.a.batch</groupId>

    <parent>
        <groupId>com.demo.parent</groupId>
        <artifactId>Parent</artifactId>
        <version>0.01-SNAPSHOT</version>
    </parent>

  <artifactId>A</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>A Maven Webapp</name>
  <url>http://localhost:8081/nexus/content/repositories/releases</url>

  <dependencies>
        <!-- Spring ORM support -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>3.2.13.RELEASE</version>
        </dependency>

        <!-- Spring Batch -->
        <dependency>
            <groupId>org.springframework.batch</groupId>
            <artifactId>spring-batch-core</artifactId>
            <version>3.0.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.batch</groupId>
            <artifactId>spring-batch-infrastructure</artifactId>
            <version>3.0.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2</artifactId>
            <version>1.6.2</version>
        </dependency>

        <dependency>
            <groupId>org.apache.xmlbeans</groupId>
            <artifactId>xmlbeans</artifactId>
            <version>2.5.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-transport-local</artifactId>
            <version>1.6.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-transport-http</artifactId>
            <version>1.6.1</version>
        </dependency>

        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.9</version>
        </dependency>

        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.1</version>
        </dependency>
</project>

项目Bpom.xml

<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.B</groupId>
    <parent>
        <groupId>com.demo.parent</groupId>
        <artifactId>Parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>B</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>B Maven Webapp</name>
    <!--url>http://maven.apache.org</url-->
     <url>http://localhost:8081/nexus/content/repositories/releases</url>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.14</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>3.2.13.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>3.2.13.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>3.2.13.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>3.2.13.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>3.2.13.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.2</version>
        </dependency>
    </dependencies>
</project>

现在,当我使用 Jenkins 构建时,构建成功,但 Jenkins 没有生成任何 war 文件。它正在生成三个不同的pom 项目。

[INFO] A Maven Webapp ........................... SUCCESS [  0.351 s]
[INFO] Demo Maven Webapp ............................ SUCCESS [  0.056 s]
[INFO] B Maven Webapp ....................... SUCCESS [  0.075 s]


[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.453 s
[INFO] Finished at: 2016-04-30T02:59:14+05:30
[INFO] Final Memory: 7M/176M
[INFO] ------------------------------------------------------------------------
[JENKINS] Archiving /var/lib/jenkins/jobs/Jenkins_Projects/workspace/A/pom.xml to com.A/A/1.0-SNAPSHOT/A-1.0-SNAPSHOT.pom
[JENKINS] Archiving /var/lib/jenkins/jobs/Jenkins_Projects/workspace/B/pom.xml to com.B/B/1.0-SNAPSHOT/B-1.0-SNAPSHOT.pom
[JENKINS] Archiving /var/lib/jenkins/jobs/Jenkins_Projects/workspace/Demo/pom.xml to Demo.Demo/Parent/1.0-SNAPSHOT/Parent-1.0-SNAPSHOT.pom
channel stopped
Finished: SUCCESS

如果我独立构建项目,则构建成功并且我也会获得 .war 文件。

但是当我从同一个存储库Demo 构建并使用父pom.xml 时,虽然构建成功,但我看不到任何.war 文件。

我该如何解决这个问题?

两个项目一起构建的方法是什么?

为什么我收到的是pom 而不是.war

虽然这不是一个项目,但为什么我会收到 Parent-1.0-SNAPSHOT.pom。它只是一个 pom 内部存储库。

请指导我。

【问题讨论】:

  • 请选择一种缩进尺寸,然后坚持下去。目前您使用 2、4、6、8,甚至在文件中混合它们。这对读者不太友好。
  • 您正在运行哪种类型的 Jenkins 项目来构建 Demo?您能否添加有关 SCM 处理的 Jenkins 构建日志的相关部分?
  • 您的 Jenkins 设置一定有问题。也许它正在拾取旧文件。也许它以某种方式配置错误。您的日志不一致:Maven 正在构建 A,然后是 Demo,然后是 B,这表明您没有构建正确的项目:如果这是一个真正的多模块项目,Maven 会先构建 Demo,然后是 A / B(或 B /A,因为它们不相互依赖)。
  • 也许使用mvn deploy 和一些工件存储库(如Nexus)会更容易。这应该使这个项目独立于詹金斯问题。
  • 父项目Maven Webapp应该先构建,这不会发生在你的日志中,所以请附上正确的项目pom和日志。

标签: maven jenkins pom.xml parent-pom


【解决方案1】:

两个项目一起建的方法是什么?

您在aggregator 项目Parent 中声明&lt;modules&gt; 是正确的。

为什么我得到的是pom 而不是.war

如果您是 installdeploy 一个 Maven 项目,您总是会得到一个 *.pom。这就是 Maven 将项目配置存储在 pom.xml 中的方式,以及在其存储库中创建的工件。

真正的问题是:为什么您AB 提供*.pom

虽然这不是一个项目,但为什么我会收到 Parent-1.0-SNAPSHOT.pom。它只是一个 pom 内部存储库。

Parent 实际上一个 Maven 项目(包装类型为pom)。因此,在构建时获得Parent-1.0-SNAPSHOT.pom 非常好。

提示:考虑在你的父 POM 中使用&lt;dependencyManagment&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-16
    • 2011-10-17
    • 2014-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    相关资源
    最近更新 更多