java - 创建单个可执行 jar 文件 Maven

标签 java maven jar pom.xml executable-jar

下午好,我想使用Maven Shade plugin打包jar -文件。但每个构建都会创建 2 jar - 文件。

为什么?以及如何制作1 jar - 文件已打包?

我的pom.xml :

<groupId>test</groupId>
<artifactId>task2_maven</artifactId>
<version>1.0</version>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.2.1</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <createDependencyReducedPom>false</createDependencyReducedPom>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <manifestEntries>
                                    <Main-Class>test.run.Runner</Main-Class>
                                    <Build-Number>1</Build-Number>
                                </manifestEntries>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>

</build>

我的输出:

enter image description here

请帮助并让我知道我做错了什么。

最佳答案

为什么这会让你烦恼?

  1. 在打包阶段,Maven 将创建 target/artifact-version.jar
  2. Shade 插件将运行,并将该 jar 重命名为 target/original-artifact-version.jar 并将着色 JAR 命名为 target/artifact-version.jar

因此,只需忽略仅包含 (1.) 的结果的 target/original-artifact-version.jar

编辑:添加此插件并运行mvn clean install但正如我想说的,我没有看到删除文件的意义

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.7</version>
            <executions>
                <execution>
                    <phase>install</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <configuration>
                        <target>
                            <delete>
                                <fileset dir="${project.build.directory}" includes="original-*.jar" />
                            </delete>
                        </target>
                    </configuration>
                </execution>
            </executions>
        </plugin>

关于java - 创建单个可执行 jar 文件 Maven,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59391160/

相关文章:

Java资源文件

java - 如何在 JTable 中控制字体样式、颜色和大小?

java - Selenium 快速查找元素是否存在的方法

scala - 动态maven artifactId

maven - 如何在 Nexus OSS 3.2 中下载远程索引?

java - 新的 Maven 依赖版本拉取 pom,而不是将 jar 放入私有(private) nexus 存储库中?

java - Java AudioClip-没有声音,没有错误

java - CachedRowSetImpl 无法解析为类型

java - Maven:无法找到或加载主类

java - Maven:从构建中排除测试