我被指派负责挑选所有与Maven / Jenkins相关的项目。目前,每当Jenkins中有SCM更改(由svn驱动)时,修改的文件会重新构建,并且依赖于它的所有内容都会构建,这种效果会发生级联。虽然从某种意义上说这是好的,但这不是首选行为。当前所需的是,构建修改的文件以及所有立即相关的内容,而不会在没有第二个文件不同的情况下向前级联。我仍然能想到的唯一解决方案(?)是Jenkins / Maven实际上并不知道项目之间的关系,并且没有进行有限级联,因为它不知道何时触发构建。
在Jenkins中,禁用“每当构建快照依赖项时构建”并使用高级构建选项中的“增量构建”。轮询SCM也已启用。 Jenkins不再在项目页面上显式知道上/下游项目。
当SCM更改时,没有级联效应作用于立即相关的模块。 Jenkins没有处理增量步骤,因此使用了增量构建插件,但没有出现不同的行为。
在旨在模拟我们实际项目尝试实现的沙箱环境中。 沙箱设置
在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的源代码中进行更改(+ 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>
顺便提一句:有没有人非常了解“增量构建”选项与“每当快照依赖项构建时构建”选项之间的交互作用?