2017-08-10 3 views
0

Ich habe die unten Projektstruktur unter lib für Projekt 2.Transitive Abhängigkeit Wie schließe ich aus? - Maven

Projekt 2 (unter lib)

- Maven dependencies (JARs) 
- project 1 JAR (it has JARs in lib) 
    - Maven dependencies of project 1 (JARs) 

ich alle JAR-Dateien unter Projekt 1 ausschließen möchten, während Projekt Vorbereitung 2.

ich verwende derzeit die unten in meinem POMs (beide Projekt 1 und Projekt 2)

<plugins> 
    <plugin> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-maven-plugin</artifactId> 
    </plugin> 
</plugins> 

Wenn ich Projekt 1 erstelle, möchte ich, dass es als ausführbare JAR mit lib erstellt wird.

Allerdings, wenn ich Projekt 2 baue, möchte ich Projekt 1 als nur eine kompilierte JAR (das heißt mit nur Klassen-Dateien und nicht mit lib (JARs)).

Projekt 1 ist als normale Abhängigkeit in Projekt 2 enthalten. Kann mir jemand helfen?

Antwort

0

Wenn ich richtig verstehe, baut Projekt 1 ein Jar, das in einem lib-Verzeichnis mit den Abhängigkeiten hat.

Sie könnten in Projekt 1 2 Assembly Ausführungen haben, eine der grundlegenden Jar und eine andere mit Abhängigkeiten und Manifest ausführen, normalerweise verwenden Sie einen anderen "Klassifikator" für mehrere Artefakte des gleichen Projekts.

Andernfalls müssten Sie die Gläser "neu packen", um die Bibliotheken zu entfernen, die Sie nicht mit einem Plugin wie Shade verwenden möchten.

Ich denke, die erste Option ist viel besser, auch standardmäßig, wenn Sie es in ein Repository veröffentlichen beide Gläser werden veröffentlicht werden, damit andere Leute das eine oder andere bekommen können.

+0

Ich möchte nur ein JAR erstellen und nicht zwei. Ich möchte, dass mein Repo nur eine Datei enthält. Können Sie mit einem Beispiel für Shade-Plugin helfen? etwas, auf das ich zurückgreifen kann? –

0

Wenn Sie alle Abhängigkeiten von einer bestimmten Abhängigkeiten ausschließen möchten, verwenden Sie Ausschlüsse

https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html

und tun es wie

<dependency> 
    <groupId>sample.ProjectA</groupId> 
    <artifactId>Project-A</artifactId> 
    <version>1.0</version> 
    <scope>compile</scope> 
    <exclusions> 
    <exclusion> 
     <groupId>*</groupId> 
     <artifactId>*</artifactId> 
    </exclusion> 
    </exclusions> 
</dependency> 

Natürlich müssen Sie sicher sein, dass die fehlenden transitiv Abhängigkeiten werden zur Laufzeit nicht benötigt.

+0

Auch wenn ich Ausschluss-Option benutze ich ausführbare jar bcz ist die Funktionalität von Spring-Boot-Maven-Plugin? –

Verwandte Themen