Do tej pory używałem wtyczki maven assembly do generowania dwóch JARów dla każdego artefaktu - skompilowanych źródeł i zależności - powodem było to proste - wdrażanie tylko skompilowanych źródeł w sieci jest znacznie szybsze niż wdrażanie all-in-one-JAR z 40 MB danych.Wtyczka Maven Shade do produkcji dwóch słoików
Z powodu nadpisania wewnętrznych plików musiałem zmienić wtyczkę maven shade, aby móc korzystać z funkcji <transformers>
. Jednak jestem w stanie zarządzać, aby uruchomić zarówno z dwóch wykonaniach:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<id>shade-libs</id>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<outputFile>target/assembly/${project.artifactId}-libs.jar</outputFile>
<artifactSet>
<excludes>
<exclude>...</exclude>
</excludes>
</artifactSet>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<id>shade-main</id>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<outputFile>target/assembly/${project.artifactId}.jar</outputFile>
<artifactSet>
<includes>
<include>...</include>
</includes>
</artifactSet>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
Kiedy biegnę mvn package
, tylko druga egzekucja jest prowadzona. Pierwszy jest zawsze ignorowany. Dzięki wtyczce do instalacji maven działało idealnie.
Oczywiście rozwiązaniem może być użycie jednocześnie wtyczki zespołu i cienia, ale chciałbym znaleźć bardziej spójne rozwiązanie.
Zamiast dwukrotnie definiować wtyczkę, czy próbowałeś zdefiniować drugie 'wykonanie' w ramach jednej definicji wtyczki? – DB5
Jeśli zarejestrujesz to jako odpowiedź, zaakceptuję to. –
Dzięki, zrobiliśmy to teraz. Cieszę się, że to rozwiązało twój problem. – DB5