java - Maven "shaded"JAR 文件名中以 "original"为前缀

标签 java maven-2

我正在使用“shade”Maven2 插件构建一个整体 JAR,其中所有 Java 依赖项捆绑在一起。 pom.xml 中的相关部分非常简单:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>1.4</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <finalName>${project.artifactId}-${project.version}-SHADED</finalName>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <mainClass>com.mypackage.MyClass</mainClass>
                    </transformer>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>

但是,构建结果很奇怪。看来这个 Maven 插件实际上创建了两个文件:

myartifact-1.0.0-SHADED.jar  (zero bytes)
original-myartifact-1.0.0-SHADED.jar  (10 MB)

前缀为“original”的 JAR 文件已正确构建,并且功能正常。我想我可以重命名它以去掉那个前缀,然后继续我的快乐之路。

但是,我很好奇“shade”插件在这里会发生什么。看起来“原始”文件是临时工作空间类型的东西,打算在进程结束时重命名,而最终重命名根本没有完成。但是,对此没有明显的解释(即文件系统权限等)。有没有人见过这个?

最佳答案

我知道这个问题很老,但认为值得添加以下信息。

我认为史蒂夫最初想要的输出是 maven-shade-plugin documentation 的此页面上给出的输出。 .

<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>jar-with-dependencies</shadedClassifierName>

关于java - Maven "shaded"JAR 文件名中以 "original"为前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4088701/

相关文章:

java - 解码输入的字符串或字母

java - 刷新 android ListView 的最佳方法是什么?

maven-2 - 询问具有默认值的 Maven 原型(prototype)属性

java - 构建maven时警告

java - GWT AsyncCallback 不填充静态成员

java - 如何找到用引号括起来的字符串并将它们替换为内联?

java - 如何设置 Maven 以在运行测试时覆盖另一个设置文件?

java - Maven过滤乱码特殊字符

java - 使用 m2eclipse 结合 WTP 构建 WAR(处理 webResources)

java - 在没有硬编码声音路径的情况下关闭应用程序时播放声音