【问题标题】:Jenkins/Maven Incremental Build troublesJenkins/Maven 增量构建问题
【发布时间】:2014-08-10 09:35:55
【问题描述】:

我的任务是收集所有与 maven/jenkins 相关的项目。目前,只要在 jenkins(svn 驱动)中发生 SCM 更改,更改的文件就会重新构建,并且依赖于它的所有内容都会构建,并且这种效果会级联。虽然这在某种意义上是好的,但它不是首选行为。当前需要的是构建更改的文件,并且所有直接相关的构建都不会向前级联,除非第二个文件现在不同。我仍然能想到的唯一解决方案(?)是 Jenkins/Maven 实际上并没有意识到项目之间的关系,并且没有进行有限的级联,因为它没有在哪里触发构建。

在 Jenkins 中,禁用“在构建快照依赖项时构建”,而是在高级构建选项中使用“增量构建”。还启用了轮询 scm。 Jenkins 在项目页面上不再有任何关于上游/下游项目的明确知识。

当 SCM 发生更改时,不会对直接依赖的模块产生级联效应。 Jenkins 没有处理增量步骤,因此使用了增量构建插件,没有发生不同的行为。

在一个沙盒环境中,旨在模拟我们的实际项目试图完成的任务。

沙盒设置

 |Trunk
 --|Project_C
 | -Pom.xml
 | -src
 --|Project_B
 | -pom.xml
 | -src
 --|Project_A
 | -pom.xml
 | -src

项目 A 依赖于项目 B。 项目 B 依赖于项目 C。

当项目 C 的 src 代码发生更改(+ SCM'd)会影响项目 B 的行为时,Jenkins 只会重建 Project_C。

项目 C 的 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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>project</groupId>
    <artifactId>c</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>
    <name>c</name>

    <build>
        <plugins>
            <plugin>
          <groupId>org.jvnet.maven.incrementalbuild</groupId>
              <artifactId>incremental-build-plugin</artifactId>
          <version>1.3</version>
              <executions>
                <execution>
                  <goals>
                    <goal>incremental-build</goal>
                  </goals>
                </execution>
              </executions>
            </plugin>
        </plugins>
    </build>
</project>

项目 B 的 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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>project</groupId>
    <artifactId>b</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>
    <name>b</name>
    <build>
        <plugins>
      <plugin>
              <groupId>org.jvnet.maven.incrementalbuild</groupId>
              <artifactId>incremental-build-plugin</artifactId>
              <version>1.3</version>
              <executions>
                <execution>
                  <goals>
                    <goal>incremental-build</goal>
                  </goals>
                </execution>
              </executions>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>project</groupId>
            <artifactId>c</artifactId>
            <version>1.0</version>
            <type>jar</type>
        </dependency>
    </dependencies>
</project>

旁注:是否有人非常了解“增量构建”选项与“每当构建快照依赖项时构建”选项之间的交互?

【问题讨论】:

    标签: java maven svn jenkins


    【解决方案1】:

    不是 jenkins 插件,是底层 maven,无法检测到这个变化,I have an open request for it already See: MNG-5523

    【讨论】:

    • 那么增量构建选项到底有什么作用?对我来说,它似乎做得很好......没什么。
    • 太晚了,但是你们在谈论不同的事情。下面的另一个答案(可能是垃圾邮件)是关于“增量构建插件”的,这也是完全不同的。
    猜你喜欢
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    相关资源
    最近更新 更多