2016-11-16 3 views
1

Ich habe Probleme mit dem Importieren von Klassen aus einer vorhandenen Spring-Boot-Anwendung in meine neue Anwendung, nachdem sie die Struktur der Build-JAR-Datei geändert.Import Maven Abhängigkeiten von einer Spring Boot 1.4 Anwendung

Sie haben die jar-Datei so geändert, dass die Klassen der Anwendungen jetzt in BOOT-INF/-Klassen und nicht im Stammverzeichnis der JAR-Datei liegen.

Aber wenn ich eine normale maven-Abhängigkeit zu dieser Spring-Boot-Anwendung habe, kann ich die vorhandenen Klassen aus dieser Anwendung und in meine neuen Klassen in meiner neuen Anwendung nicht importieren.

Es funktionierte gut, bevor sie die Struktur ...

+2

Sie sollten nicht ein feder Boot Glas in einer anderen Feder-Boot-Glas in erster Linie sein, einschließlich. –

+0

Wenn zwischen Anwendungen Code vorhanden ist, sollte dieser in einem separaten Bibliotheksprojekt enthalten sein. – OrangeDog

Antwort

3

hier Die Lösung verändert ist Ihr Code Refactoring, so dass die Klassen Sie je nach in beiden Anwendungen in einem separaten Projekt zur Verfügung stehen.

Jetzt können Sie diese Klassen verwenden, indem die Abhängigkeit sowohl in Ihre Projekte importieren:

<dependency> 
    <groupId>org.example</groupId> 
    <artifactId>example-shared</artifactId> 
</dependency> 

Vergewissern Sie sich, dass Sie nicht das Frühlings Boot Maven Plugin in diesem neu gemacht gemeinsamen Projekt mit und Sie sollten wahrscheinlich nicht Verwenden Sie auch Spring-Boot-Starter, da sie viele Abhängigkeiten laden, die Sie möglicherweise nicht benötigen.

+0

Ja, ich weiß, dass das wahrscheinlich der richtige Weg ist. Wir haben eine REST-API als Spring-Boot-Anwendung erstellt und ein Objekt als Eingabe für eine POST-Methode in der Anwendung definiert. Und deshalb war es für uns einfach, eine Abhängigkeit von der API zu haben, um das definierte Objekt auch in der aufrufenden Anwendung zu verwenden ... Und das hat gut funktioniert, bis Spring Boot das Layout der JAR-Dateien von der Version änderte 1.4. Also habe ich mich gefragt, ob es eine Möglichkeit gibt, es auch nach der Version 1.4 auf die gleiche Art und Weise funktionieren zu lassen ... – runesr

0

Ich fand heraus, dass es tatsächlich möglich ist, eine Spring Boot-Anwendung als Abhängigkeit zu verwenden. Obwohl es höchstwahrscheinlich nicht empfohlen wird. In manchen Fällen ist es jedoch einfacher. Diese Lösung bedeutet, dass Sie das ausführbare Archiv nicht verwenden können.

"Das ausführbare Archiv kann nicht als Abhängigkeit verwendet werden, da das ausführbare jar-Format Anwendungsklassen in BOOT-INF/classes packt. Das heißt, sie können nicht gefunden werden, wenn das ausführbare jar als Abhängigkeit verwendet wird."

Die Lösung meiner Frage ist es, einen Konfigurationsklassifikator in das Spring-Boot-Maven-Plugin einzubinden. Wie dies für Maven:

<plugin> 
<groupId>org.springframework.boot</groupId> 
<artifactId>spring-boot-maven-plugin</artifactId>     
<configuration> 
    <classifier>exec</classifier> 
</configuration> 
</plugin> 

oder, wie dies für Gradle:

bootRepackage { 
classifier = 'exec' 
} 
Verwandte Themen