maven - 使用 Maven 构建 fat jar

标签 maven jar maven-assembly-plugin

我有一个代码库,我想将其作为 jar 分发。它还依赖于外部 jar,我想将其捆绑在最终的 jar 中。

我听说这可以使用maven-assemble-plug-in来完成,但我不明白如何做。有人可以给我举一些例子吗?

现在,我正在使用 fat jar 来捆绑最终的 jar。我想使用 Maven 实现同样的目标。

最佳答案

注意:如果您是 spring-boot 应用程序,请阅读答案末尾

将以下插件添加到您的pom.xml 最新版本可以是found at

...
<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 将生成两个 jar:一个仅包含项目类,第二个 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>
<小时/>

对于 Spring Boot 应用程序仅使用以下插件(选择适当的版本)

<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>

关于maven - 使用 Maven 构建 fat jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16222748/

相关文章:

Java 绝对路径 - Mac OS X - Windows

java - Apache Maven 程序集插件无法与 OSGi bundle 一起使用

java - .zip 项目的 Maven 程序集,仅包含 .jar 和配置文件

java - 排除外部依赖项中所需的库

android - 导入后我的外部 JAR 文件库未显示在 'External Libraries' 中

maven - 我如何将多个 Maven Artifact 部署到多个 Nexus 存储库,包括快照存储库而无需指定配置文件?

java - 创建 .jar 文件时的数据库附件

maven 用 jar 和更多文件创建 zip

java - MyEclipse + Maven + ActiveJDBC 如何自动运行instrumentation

java - 无法读取 Artifact org.apache.maven.plugins :maven-install-plugin:maven-plugin:2. 4:runtime 的生命周期映射元数据