web-dev-qa-db-ja.com

spring-boot-maven-pluginはfat jarを作成しません

spring-boot-maven-pluginを使用してRESTサービスをパッケージ化します。mvn clean installまたはmvn clean packageを使用してjarを構築しています。追加された依存関係が見つからない(すべての依存関係を持つファットjarになると予想していました)

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>

Java -jar myapp.jar -Drun.jvmArguments="-Dspring.profiles.active=qal"を使用してスプリングブートを実行すると、多くのクラスでClassNotFoundExceptionが発生します。アーティファクトが期待どおりにビルドされなかったことは明らかです。ただし、maven ./mvnw spring-boot:run -Drun.jvmArguments="-Dspring.profiles.active=qal"を使用してスプリングブートアプリケーションを起動すると、ターゲットフォルダー内のすべての依存関係が検出されるため、正常に動作します。 Java -jarコマンドを使用してアプリを起動できるように、ビルドの問題を修正するにはどうすればよいですか。

編集:それはマルチモジュールのMavenプロジェクトです

10
Pankaj

間違ったコマンドを使用しているようです。 mvn clean packageはmavenコマンドです。コマンド 'repackage'を使用する必要があります。

Java -jarを使用してコマンドラインから実行できるように、既存のJARおよびWARアーカイブを再パッケージ化します

ここで述べたように https://docs.spring.io/spring-boot/docs/current/maven-plugin/repackage-mojo.html

または、おそらくプラグイン構成の問題です。チェックしたところ: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>
7
krund

これを使って

<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