Ich habe ein Multiple-Module-Projekt in IntelliJ eingerichtet. Meine Module Struktur sieht wie folgt aus:Wie baue ich ein Uber jar mit Abhängigkeiten von mehreren Modulen
Project (no pom.xml file)
|
|--moduleA
| |
|
|--moduleB
| |-Log4J
| |-Jackson
|
|--moduleC
| |-moduleA
| |-moduleB
| |-Log4J
|
|--moduleD
| |-moduleC
| |-moduleA
| |-moduleB
| |-Log4J
|
|--moduleE
| |-moduleA
| |-moduleB
| |-moduleC
| |-Log4J
moduleC
hängt von moduleA
und moduleB
und moduleD
hängt von moduleA
, moduleB
und moduleC
. Das gleiche gilt für moduleE
.
Ich möchte zwei Uber Gläser erstellen. Ein für moduleD
und einen für moduleE
, jeder von ihnen die Modulabhängigkeiten enthält, einschließlich Modul A, B und C.
Ich verwende Maven 3 meine Abhängigkeiten und die Maven-Schatten-Plugin zu verwalten die Uber jar zu erstellen.
Ich habe die notwendigen Abhängigkeiten in den pom.xml
Dateien wie folgt hinzugefügt:
<dependency>
<groupId>com.modules</groupId>
<artifactId>moduleA</artifactId>
<version>1.0</version>
</dependency>
Und ich habe die maven-shade-plugin
die pom.xml
Dateien jedes Moduls hinzugefügt. Bisher bin ich in der Lage ein uber Glas für moduleA
und moduleB
zu bauen, aber wenn ich versuche moduleC
ich die folgende Fehlermeldung erhalten:
[WARNING] The POM for com.modules:moduleA:jar:1.0 is missing, no dependency information available
[WARNING] The POM for com.modules:moduleB:jar:1.0 is missing, no dependency information available
Wie kann ich dieses Problem lösen?
Wenn ich die Module durch IntelliJ baue und betreibe, funktioniert alles. Ich konnte auch ein Uber-JAR bauen, indem ich ein IntellJ-Artefakt konfigurierte.
Wie kann ich Maven dafür konfigurieren? Ich brauche es, weil ich ein Über-Glas für die Produktion verwenden möchte und ich versuche, Jenkins einzurichten, um die Lösung nach einem Commit zu erstellen.
Ich habe den folgenden Beitrag rot: How to create self-containing (standalone) jar of each modules of a multi-module maven project, aber ich konnte es nicht funktionieren.
EDIT:
Dies ist die maven-shade-plugin
Einstellungen in moduleA
und moduleB
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
Dies ist maven-shade-plugin
in moduleC
:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
Wie Sie sehen können, verwende ich die Standardkonfiguration.
Wie haben Sie die maven-shade-plugin Einstellungen definiert? ohne zu sehen, was Sie einrichten, ist es schwer zu diagnostizieren. – Tschallacka
@MichaelDibbets finden Sie im EDIT-Abschnitt für die Konfig. –
https://maven.apache.org/plugins/maven-shade-plugin/examples/includes-excludes.html Gibt es einen Grund, warum Sie nicht definiert haben? –
Tschallacka