Wir müssen ein JAR mithilfe von Maven so erstellen, dass alle Abhängigkeiten enthalten sind, aber auch, dass alle Abhängigkeiten umbenannt (verschoben) werden.Maven - Gibt es eine Möglichkeit, einfach ein 'Uber'-Glas mit allen Abhängigkeiten zu erstellen?
Sagen wir unsere eigenen Pakete alle mit com.mycompagny.projectx.*
starten“. Wir wollen, dass die Projektabhängigkeiten ihr Paket beginnt mit umbenannt haben‚embedded
‘, aber nicht unsere eigenen Klassen.
Mit maven-shade-plugin zum Beispiel, ich bin . nicht in der Lage, dies zu erreichen:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached>
<createDependencyReducedPom>true</createDependencyReducedPom>
<artifactSet>
<includes>
<include>*.*</include>
</includes>
</artifactSet>
<relocations>
<relocation>
<pattern>*</pattern>
<shadedPattern>embedded.</shadedPattern>
<excludes>
<exclude>com.mycompagny.projectx.*</exclude>
</excludes>
</relocation>
</relocations>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
Hier <pattern>*</pattern>
nicht gültig auch, wenn ich <pattern></pattern>
(leere Zeichenkette) verwenden, wird dann alles auf die „embedded“ Paket verlegt, auch die Ressourcen (die „META -INF "di Pfarrhaus auch)! Natürlich wollen wir, dass die Ressourcen am Ursprung des Krugs bleiben.
Ich denke, wir mehr <relocation>
Elemente schaffen könnten, einen für jedes Paket der Abhängigkeiten, aber das wäre eine Menge Arbeit: <relocation>com</relocation>
, <relocation>net</relocation>
, <relocation>javax</relocation>
usw.
Jede Idee, wie leicht verlagern alle Abhängigkeiten innerhalb des Uber-Jar, ohne unsere eigenen Klassen, Ressourcen und das "META-INF" -Verzeichnis zu berühren?
Während dies Ihr Problem nicht gelöst hat ... Diese _IS_ eine äußerst nützliche undokumentierte Funktion.Ich habe Ressourcen, die in einen anderen Ordner verschoben werden mussten (nicht Quellcode und nicht in einer Paketstruktur). Danke für das Schreiben. – Lucas