2017-06-09 5 views
0

Ich versuche, eine Übung mit dem Mikro-Service in Java mit Frühlings-Boot zu tun, denn diesen entwickle ich zwei Web-Service in verschiedenen Projekten mit der Absicht, sie in tomcat wie zwei unabhängigen Dateien (.war) bereitstellen.Wie kompiliere Spring-Boot-Maven-Plugin ohne Abhängigkeiten?

Ich habe über eingerichtet tomcat die Abhängigkeiten in einem bestimmten Ordner, um es mit anderen Diensten und auf diese Weise zu teilen nicht die gleichen Bibliotheken in allen Dienstleistungen zu erhöhen.

Das Problem ist, dass, wenn ich den Service mit Maven durch das Artefakt Spring-Boot-Maven-Plugin kompiliert haben die .war-Dateien immer die Abhängigkeiten innerhalb hat. Weil ich möchte wissen, ob jemand weiß, wie man Maven zu Abhängigkeiten von .war Datei ..... in Spring Boot zu konfigurieren.

Die .war folgt mit den Abhängigkeiten innen, Bearbeitet: Ich habe die bereitgestellten wie gesagt Michael Potter und die Ausführung hinzugefügt. es funktioniert gut. Mein pom.xml ist der Nachfolger:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.example</groupId> 
    <artifactId>demo</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <name>demo1</name> 
    <description>Demo project for Spring Boot</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.5.4.RELEASE</version> 
     <relativePath/> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <java.version>1.8</java.version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
       <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
       <scope>provided</scope> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
       <executions> 
       <execution> 
        <goals> 
         <goal>repackage</goal> 
        </goals> 
        <configuration> 
         <skip>true</skip> 
        </configuration> 
       </execution> 
      </executions> 
      </plugin> 
     </plugins> 
    </build> 


</project> 

Antwort

0

Für Maven nicht Abhängigkeit in WAR-Datei enthalten, die Sie seine Umfang zu vorgesehen angeben. Die Beschreibung des Umfangs von offizieller Maven Dokumentation:

Dies ist ähnlich wie die Kompilierung, sondern zeigen Sie das JDK oder ein Behälter erwarten, dass die Abhängigkeit zur Laufzeit zur Verfügung zu stellen. Wenn Sie zum Beispiel eine Webanwendung für die Java Enterprise Edition erstellen, würden Sie die Abhängigkeit von der Servlet-API und verwandten Java EE-APIs auf festlegen, da der Webcontainer diese Klassen bereitstellt. Dieser Bereich ist nur für den Kompilierungs- und Testklassenpfad verfügbar und ist nicht transitiv.

<dependency> 
    <groupId>com.h2database</groupId> 
    <artifactId>h2</artifactId> 
    <version>1.4.192</version> 
    <scope>provided</scope> 
</dependency> 

wird die Abhängigkeit der Quellen zu kompilieren heruntergeladen werden, aber in der WAR nicht gepackt.

Betreffend Spring-Boot-Maven-Plugin. Standardmäßig wird ein WAR neu gepackt, sodass Sie es von der Konsole aus starten können. Somit paketiert es alle erforderlichen Abhängigkeiten zum Archiv - auch mit dem bereitgestellten Umfang. {Projektname} .war, die neu verpackt und {Projektname} .war.original - derjenige, der nicht zur Verfügung gestellt Abhängigkeiten enthalten sollte: Sie können Ihre Zielverzeichnis zwei Dateien sehen in. So deaktivieren Sie Umpacken Feder-boot-Maven-Plugin Konfiguration wie folgt ändern sollte:

<plugin> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-maven-plugin</artifactId> 
    <executions> 
     <execution> 
      <goals> 
       <goal>repackage</goal> 
      </goals> 
      <configuration> 
       <skip>true</skip> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

Dann müssen Sie die erforderliche Abhängigkeit Katers platzieren/lib Ordner und starten Sie den Tomcat.

+0

Hallo. Danke für deine Hilfe, aber es funktioniert nicht im Frühjahrsstiefel. Ich kenne die Ursache nicht. –

+0

Ich habe die Frage bearbeitet und ich habe die pom.xml hinzugefügt, aber es ist nicht die Lösung für mich. –

+0

Sie sollten den Testbereich für Testabhängigkeiten wie Spring-Boot-Starter-Test verlassen, da Abhängigkeiten mit diesem Bereich nicht in WAR gepackt werden. –