1. ホーム
  2. maven

[解決済み] mavenを使用したfat jarのビルド

2022-06-17 09:55:19

質問

私は jar として配布したいコードベースを持っています。また、外部jarに依存しており、最終的なjarにバンドルしたいです。

私は、これは maven-assembly-plug-in を使うことができると聞きましたが、どのようにすればよいのかわかりません。どなたか例を教えてください。

今、私は最終的なjarをバンドルするために脂肪jarを使用しています。私は、maven を使用して同じことを達成したいです。

どのように解決するのですか?

注:あなたが春-ブートアプリケーションであれば、回答の終わりを読んでください。

次のプラグインをあなたの pom.xml 最新バージョンは で見つけることができます。

...
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>CHOOSE LATEST VERSION HERE</version>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>assemble-all</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
...

このプラグインを設定した後、実行 mvn package は2つのjarを生成します。1つはプロジェクトのクラスだけを含むjar、もう1つはすべての依存関係を含むfat jarで、接尾辞は "-jar-with-dependencies" です。

正しければね classpath を実行時に設定し、さらに以下のプラグインを追加します。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <mainClass>fully.qualified.MainClass</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>


春のボートアプリケーション用 以下のプラグインを使用します(適切なバージョンを選択してください)。

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <fork>true</fork>
        <mainClass>${start-class}</mainClass>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>