wake-up-neo.com

spring-Boot-Maven-Plugin erstellt kein fettes Gefäß

Ich verwende spring-boot-maven-plugin, um meinen REST - Dienst zu verpacken. Ich baue das Glas mit mvn clean install oder mvn clean package. Nachdem ich das Glas dekompiliert habe, finde ich keine der hinzugefügten Abhängigkeiten (ich hatte erwartet, dass es ein fettes Glas mit allen Abhängigkeiten ist)

 enter image description here

 <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>1.5.9.RELEASE</version>
    <executions>
        <execution>
           <phase>install</phase>
           <goals>
              <goal>repackage</goal>
              <goal>build-info</goal>
           </goals>
        </execution>
    </executions>
    <configuration>
        <executable>true</executable>
        <finalName>myapp</finalName>
        <includeSystemScope>true</includeSystemScope>
    </configuration>
</plugin>

Wenn ich den Spring Boot mit Java -jar myapp.jar -Drun.jvmArguments="-Dspring.profiles.active=qal" starte, erhalte ich für viele Klassen ClassNotFoundException. Es ist klar, dass das Artefakt nicht wie erwartet aufgebaut wurde. Wenn ich jedoch die Spring-Boot-Anwendung mit maven ./mvnw spring-boot:run -Drun.jvmArguments="-Dspring.profiles.active=qal" starte, werden alle Abhängigkeiten im Zielordner gefunden. Wie kann ich das Build-Problem beheben, so dass ich die App mit dem Java-Befehl jar starten kann. 

EDIT: Es ist ein Multi-Modul-Maven-Projekt

7
Pankaj

es scheint, dass Sie einen falschen Befehl verwenden. mvn clean package ist ein maven-Befehl, Sie sollten den Befehl 'repackage' verwenden, für den er verwendet wird

Umpacken Sie vorhandene JAR- und WAR-Archive, damit sie ausgeführt werden können von der Kommandozeile mit Java -Jar

wie hier erwähnt https://docs.spring.io/spring-boot/docs/current/maven-plugin/repackage-mojo.html

Oder es liegt wahrscheinlich ein Problem mit der Plugin-Konfiguration vor. Nur überprüft: es funktioniert mit spring-boot-maven-plugin-2.0.0.RELEASE 

<plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                        <configuration>
                            <classifier>exec</classifier>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
4
krund

Verwende das hier

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <executions>
    <execution>
      <goals>
        <goal>repackage</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <mainClass>${start-class}</mainClass>
    <executable>true</executable>
    <fork>true</fork>
    <!-- Enable the line below to have remote debugging of your application on port 5005
         <jvmArguments>-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005</jvmArguments>
     -->
  </configuration>
</plugin>
0
test1