webentwicklung-frage-antwort-db.com.de

Wie man ein Maven-Plugin zweimal mit unterschiedlichen Eigenschaften ausführt

Ich möchte von einem Maven Pom aus zwei aufeinanderfolgende Ausführungen desselben Plugins erstellen, in derselben Phase, die sich nur durch eine einzige Eigenschaft unterscheidet, was dazu führt, dass zwei verschiedene Archive erstellt werden. Da die Konfiguration ziemlich kompliziert ist, kopiere ich sie NICHT, um nur einen Wert zu ändern, der einen Albtraum für die Wartung erzeugen würde. Wenn es irgendwie möglich wäre, eine solche Eigenschaft im <executions>-Abschnitt der Plugin-Konfiguration zu definieren, könnte ich diese Kopfschmerzen vermeiden.

Frage : Ist das möglich und wenn ja wie?

Update : Zwei Antworten wurden mit mehreren Ausführungen erwähnt und eine davon erwähnt, dass Sie bei jeder Ausführung unterschiedliche Konfigurationen verwenden können. Kann ich angesichts der Tatsache, dass der Großteil meiner Konfiguration zwischen den beiden Ausführungen konstant ist, eine Konfiguration auf Plugin-Ebene und auch Konfigurationsabschnitte in jeder Ausführung für die verschiedenen Teile haben?

14
Steve Cohen

In Anbetracht der einfachen Konfiguration des Maven Source Plugins (als Beispiel) haben Sie eine gemeinsame Konfiguration für alle Ausführungen (außerhalb des Elements executions) und anschließend für jede Ausführung eine benutzerdefinierte Konfiguration für dieselbe Phase, wie in Ihrer Frage gefordert:

<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>

Der Konfigurationseintrag <includePom>true</includePom> wird in diesem Fall mit den benutzerdefinierten Konfigurationen jeder Ausführung zusammengeführt und zentralisiert die allgemeine Konfiguration als generische Konfiguration des Plugins. 

Weitere Informationen zu den verschiedenen Konfigurationsstufen finden Sie in der offiziellen Maven-Dokumentation hier , insbesondere im Beispiel "Konfigurieren von Compile für zweimaliges Ausführen". Weitere Details finden Sie auch in der offiziellen POM-Dokumentation, hier , Plugins-Bereich.

15
A_Di-Matteo

Sie müssen eine andere Ausführung erstellen (immer noch an dieselbe Phase gebunden).

Um eine Verdoppelung der Konfiguration zu vermeiden, können Sie den <configuration> außerhalb des <execution>-Elements platzieren. In den beiden Ausführungen definieren Sie nur die Eigenschaft, die sich unterscheidet.

Aus dem Maven docs genommen:

<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

Sie erstellen zwei <execution> -Elemente in der <plugin> -Deklaration. Jedes <execution> -Element kann einen eigenen <configuration> -Abschnitt haben.

0
tdrury

Ich wollte ein Jar erstellen und in eine Zip-Datei mit anderen Konfigurationsdateien Einfügen. Das funktionierte für mich 

	<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