1

Maven Sortpom プラグインはプロジェクトのビルドの結果に影響を与えますか?

sortpom プラグインが追加されたという理由だけで、プロジェクトのビルドが失敗する可能性はありますか?

4

3 に答える 3

1

通常、pom.xml ファイル内の要素の順序は重要ではないため、要素の順序を変更してもビルドには影響しません。

しかし、私はこの規則の 2 つの例外を知っています。

  • Mavenは、コンパイル時に pom ファイル内の順序に従って依存関係を読み取ります。その順序を並べ替えると、コンパイルの出力に影響する場合があります。
  • 2 つのプラグインが同じフェーズで実行される場合、pom-file 内の順序によって、最初に実行するプラグインが決まります。プラグインを並べ替えると、あるプラグインの結果が別のプラグインに依存している場合、コンパイルが失敗する可能性があります。

デフォルトでは、sortpom プラグインは依存関係もプラグインもソートしません。したがって、sortpom プラグインがプロジェクトのビルドの結果に影響を与えるべきではないと言えます。

于 2013-05-14T10:08:39.533 に答える
0

ビルドに失敗する可能性があります:

[エラー] ゴール com.google.code.sortpom:maven-sortpom-plugin:2.3.0:sort (default) をプロジェクト data-extractor で実行できませんでした: scm.team.company.corp: 不明なホスト scm.team-project .company.corp -> [ヘルプ 1]

-o を指定して実行しても、ネットワークの問題によりファイルが見つからない場合

于 2016-01-31T22:02:00.053 に答える
0

はい。

たとえば、次を使用します。

  1. org.codehaus.mojo:build-helper-maven-pluginのフェーズでのreserve-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と、システム プロパティは (必要な時点で) 埋められません。これは、並べ替えの後、ビルド ヘルパー アーティファクトがゴールが呼び出された後に実行されるため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 に答える