vorangestellt Ich verwende das "Schatten" Maven2-Plugin, um eine monolithische JAR mit allen Java-Abhängigkeiten gebündelt zu erstellen. Der entsprechende Abschnitt in pom.xml
ist ziemlich einfach:Maven "schattiert" JAR ist mit "Original" in den Dateinamen
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<finalName>${project.artifactId}-${project.version}-SHADED</finalName>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.mypackage.MyClass</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
Allerdings sind die Build-Ergebnisse ungerade. Es scheint, dass zwei Dateien tatsächlich von diesem Maven Plugin erstellt:
myartifact-1.0.0-SHADED.jar (zero bytes)
original-myartifact-1.0.0-SHADED.jar (10 MB)
Die JAR-Datei mit dem Präfix „Original“ richtig aufgebaut ist und funktioniert gut. Ich nehme an, ich könnte es einfach umbenennen, um dieses Präfix abzustreifen und auf meinen fröhlichen Weg zu gehen.
Allerdings bin ich sehr gespannt was hier mit dem "Schatten" -Plugin vorgeht. Es sieht so aus, als wäre die "Original" -Datei ein temporäres Arbeitsraum-Thing, das am Ende des Prozesses umbenannt werden soll, und das endgültige Umbenennen wird einfach nicht abgeschlossen. Es gibt jedoch keine offensichtliche Erklärung dafür (d. H. Dateisystemberechtigungen usw.). Hat das schon mal jemand gesehen?
Sie könnten erwägen, Ihr Häkchen auf Stewarts Antwort zu setzen. – Gray
Eine Umgehung ist es, '/tmp outputDirectory>' zu setzen. Die 'original - * .jar'-Datei wird noch geschrieben, aber sie befindet sich zumindest nicht im Entwicklungspfad. –