创建包含所有依赖项的可执行jar打包的jar

时间:2020-01-22 13:11:18

标签: java maven executable-jar maven-assembly-plugin

我试图了解如何将所有依赖项作为打包的jar(包括jar中的jar)包含在可执行jar文件中,但是我失败了。

有人可以指出我正确的方向吗?

请注意,我不会将生成的胖罐子包装在其中,而不是使用maven-assembly-plugin获得的未包装的同类罐子。

2 个答案:

答案 0 :(得分:1)

您要创建的内容称为胖罐子。您可以通过执行后续步骤来生成它。

在您的POM文件中添加构建部分,如下所示:

<build>
    <finalName>example</finalName>
    <plugins>

        <!-- Set a compiler level -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>${jdk.version}</source>
                <target>${jdk.version}</target>
            </configuration>
        </plugin>

        <!-- Maven Assembly Plugin -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.4.1</version>
            <configuration>
                <!-- get all project dependencies -->
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <!-- MainClass in mainfest make a executable jar -->
                <archive>
                  <manifest>
                    <mainClass>com.example.Main</mainClass>
                  </manifest>
                </archive>

            </configuration>
            <executions>
              <execution>
                <id>make-assembly</id>
                <!-- bind to the packaging phase -->
                <phase>package</phase> 
                <goals>
                    <goal>single</goal>
                </goals>
              </execution>
            </executions>
        </plugin>

    </plugins>
</build>

上面的“ Maven组件插件”绑定到Maven的打包阶段,以生成最终的Jar,只需使用以下命令对其进行打包即可:

mvn package

将在目标文件夹中创建两个jar文件。

  • example.jar –仅您的项目类

  • example-jar-with-dependencies.jar –项目和依赖项类位于单个jar中。

您现在可以使用以下方法检查脂肪罐的内容:

jar tf target/example-jar-with-dependencies.jar 

答案 1 :(得分:0)

在pom.xml中包含依赖项。使用mvn clean install构建项目,结果将具有这些依赖性。 然后,您可以使用

运行jar
java -cp <jar Filename> <main class name>