web-dev-qa-db-ja.com

異なるプロパティでMavenプラグインを2回実行する方法

同じプラグインの2つの順次実行を実行するmaven pomからビルドしたいのですが、同じフェーズで単一のプロパティのみが異なるため、2つの異なるアーカイブが作成されます。構成はかなり複雑なので、1つの値を変更するためだけにコピーするのではなく、メンテナンスの悪夢を生むことになります。プラグイン構成の<executions>セクションでそのようなプロパティを定義することが何らかの方法で可能であった場合、この頭痛の種を回避することができました。

質問:これは可能ですか?

pdate:複数の実行を使用することについて2つの回答があり、それらの1つは各実行で個別の構成を使用できると述べています。しかし、私の構成の大部分が2つの実行間で一定であることを考えると、プラグインレベルで1つの構成を使用でき、異なる部分の各実行で構成セクションも使用できますか?

20
Steve Cohen

単純なMavenソースプラグイン構成(例として)を指定すると、その実行のすべて(executions要素の外)で共有構成があり、次に同じフェーズで、各実行ごとにカスタム構成が要求されます。あなたの質問:

<build>
    <plugins>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <includePom>true</includePom>
            </configuration>
            <executions>
                <execution>
                    <id>test-id1</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                    <configuration>
                        <finalName>aaa</finalName>
                    </configuration>
                </execution>
                <execution>
                    <id>test-id2</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                    <configuration>
                        <finalName>bbb</finalName>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

構成エントリ<includePom>true</includePom>この場合、各実行のカスタム構成とマージされるため、共通構成をプラグインの汎用構成として集中化します。

さまざまなレベルの構成の詳細については、Mavenの公式ドキュメント here を確認してください。特に、「コンパイルを2回実行するように構成する」の例をご覧ください。詳細については、公式のPOMドキュメント here の「プラグイン」セクションを参照してください。

17
A_Di-Matteo

別の実行を作成する必要があります(まだ同じフェーズにバインドされています)

設定の重複を避けるために、<configuration><execution>要素を使用して、2つの実行で異なるプロパティのみを定義します。

Mavenから取得 docs

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-myquery-plugin</artifactId>
        <version>1.0</version>
        <executions>
          <execution>
            <id>execution1</id>
            <phase>test</phase>
            <configuration>
              <url>http://www.foo.com/query</url>
              <timeout>10</timeout>
              <options>
                <option>one</option>
                <option>two</option>
                <option>three</option>
              </options>
            </configuration>
            <goals>
              <goal>query</goal>
            </goals>
          </execution>
          <execution>
            <id>execution2</id>
            <configuration>
              <url>http://www.bar.com/query</url>
              <timeout>15</timeout>
              <options>
                <option>four</option>
                <option>five</option>
                <option>six</option>
              </options>
            </configuration>
            <goals>
              <goal>query</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  ...
</project>
3
Augusto

<plugin>宣言内に2つの<execution>要素を作成します。各<execution>要素は、独自の<configuration>セクションを持つことができます。

0
tdrury

Jarを作成し、他の構成ファイルを使用してZipファイルに配置したかったのですが、これでうまくいきました

    <plugin>
                                <groupId>org.Apache.maven.plugins</groupId>
                                <artifactId>maven-Assembly-plugin</artifactId>
                                <version>2.4.1</version>
                                <executions>
                                        <execution>
                                        <id>build-jar-with_dep1</id>
                                         <phase>package</phase>
                                                <configuration>
                                                        <descriptorRefs>
                                                                <descriptorRef>jar-with-dependencies</descriptorRef>
                                                        </descriptorRefs>
                                                        <finalName>${buildversion}</finalName>
                                                        <finalName>finalname</finalName>
                                                        <appendAssemblyId>false</appendAssemblyId>
                                                </configuration>
                                                <goals>
                                <goal>Assembly</goal>
                            </goals>
                                        </execution>
                                        <execution>
                                        <id>build_Zip1</id>
                                         <phase>package</phase>
                                                <configuration>
                                                        <descriptor>src/Assembly/bin.xml</descriptor>
                                                        <finalName>${buildversion}</finalName>
                                                        <finalName>finalname</finalName>
                                                        <appendAssemblyId>false</appendAssemblyId>
                                                </configuration>
                                                <goals>
                                <goal>single</goal>
                            </goals>
                                        </execution>
                        
                                </executions>
                        </plugin>
0
user1620674