1

Maven Sortpom 插件会影响项目构建的结果吗?

是否有可能仅仅因为添加了 sortpom 插件而导致项目构建失败?

4

3 回答 3

1

通常 pom.xml 文件中元素的顺序无关紧要,因此重新排序元素不应影响构建。

但我知道这条规则有两个例外:

  • Maven在编译时根据pom-file中的顺序读取依赖。重新排列该顺序可能会影响编译输出。
  • 如果两个插件在同一阶段执行,则 pom-file 中的顺序将决定首先执行哪个插件。如果一个插件的结果依赖于另一个插件,则对插件进行排序可能会导致编译失败。

sortpom 插件默认不会对依赖项或插件进行排序。所以我想说 sortpom 插件不应该影响项目构建的结果。

于 2013-05-14T10:08:39.533 回答
0

它可能会使构建失败:

[错误] 无法执行目标 com.google.code.sortpom:maven-sortpom-plugin:2.3.0:sort (default) on project data-extractor: scm.team.company.corp: Unknown host scm.team-project .company.corp -> [帮助 1]

如果由于网络问题而找不到文件,即使使用 -o 运行也是如此

于 2016-01-31T22:02:00.053 回答
0

是的。

例如,您使用:

  1. org.codehaus.mojo:build-helper-maven-pluginreserve-network-port阶段性目标pre-integration-test
  2. org.apache.tomcat.maven:tomcat7-maven-pluginrun目标也在阶段pre-integration-test

现在,sortpom:sort对它们进行排序,在 maven-3 中,插件的顺序很重要。因此,如果您通过 的portName特性为 tomcat 配置一个随机端口reserve-network-port,系统属性将不会被填充(在需要的时候),因为在排序之后,在调用目标之后执行 build- helper工件run

排序后的示例:

<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat7-maven-plugin</artifactId>
  <version>2.0</version>
  <executions>
      <execution>
          <id>start-tomcat</id>
          <phase>pre-integration-test</phase>
          <goals>
              <goal>run</goal>
          </goals>
          <configuration>
              <fork>true</fork>
          </configuration>
      </execution>
      <!-- ... -->
  </executions>
  <configuration>
      <fork>true</fork>
      <port>${tomcat.http.port}</port><!-- Oops, not set (yet)! -->
  </configuration>
</plugin>
<!-- ... -->
<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>build-helper-maven-plugin</artifactId>
  <version>${build-helper.version}</version>
  <executions>
      <execution>
          <id>reserve-tomcat-port</id>
          <phase>pre-integration-test</phase>
          <goals>
              <goal>reserve-network-port</goal>
          </goals>
          <configuration>
              <portNames>
                  <portName>tomcat.http.port</portName><!-- Too late -->
              </portNames>
          </configuration>
      </execution>
  </executions>
</plugin>
于 2017-01-11T14:10:41.277 回答