当前位置: 首页 > 知识库问答 >
问题:

maven shade没有使用清单创建胖罐子

卫博雅
2023-03-14

我使用的是maven 3.6.1和maven shade plugin 2.3。我已经复制了下面pom文件中的shade插件部分。清单是在创建jar时创建的,但它没有引用主类。我正在使用mvnpackage命令创建jar。对如何解决这个问题有什么想法吗?

        <plugin>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.3</version>
            <configuration>
                <createDependencyReducedPom>true</createDependencyReducedPom>
                <transformers>
                    <transformer
                            implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                    <transformer
                            implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <mainClass>com.abc.someclass</mainClass>
                    </transformer>
                </transformers>
                <!-- exclude signed Manifests -->
                <filters>
                    <filter>
                        <artifact>*:*</artifact>
                        <excludes>
                            <exclude>META-INF/*.SF</exclude>
                            <exclude>META-INF/*.DSA</exclude>
                            <exclude>META-INF/*.RSA</exclude>
                        </excludes>
                    </filter>
                </filters>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

共有2个答案

酆景辉
2023-03-14

除了更新的命令行,我还必须添加一个

xml prettyprint-override">    <artifactId>maven-shade-plugin</artifactId>
    <version>3.2.3</version>
    <configuration>
        <shadedArtifactAttached>false</shadedArtifactAttached>
        <transformers>
            <transformer
                implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                <mainClass>org.foo.bar.Main</mainClass>
                <manifestEntries>
                    <Main-Class>org.foo.bar.Main</Main-Class>
                </manifestEntries>
            </transformer>
    ...

慕容超
2023-03-14

我必须按如下方式运行包命令(即以阴影为目标):

mvn clean package shade:shade

从pluginManagement中移除插件允许我使用以下代码创建阴影jar:

mvn clean package
 类似资料:
  • 如标题所示,我想知道如何修改以创建一个唯一的,其中包含所有依赖项(包括kotlin lib)。 我在Groovy中找到了这个示例: 但我不知道我怎么能用kotlin写,除了:

  • 问题内容: 我正在运行Intellij创建的jar。我提取了罐子,发现还有 另一个 清单文件,而不是我在创建工件时指定的清单文件。 当我在IDE中打开清单时,它会正确显示所有内容,但是在创建jar之后,我会得到一个全新的清单文件。 我尝试了其他答案的每个解决方案,但仍然做不正确。为什么创建一个简单的jar是Intellij的任务,应该可以帮助开发人员! 已编辑 有时它在Jar中不包含.class文

  • 我在运行IntelliJ创建的jar时获得。我提取了jar,并观察到有另一个清单文件,而不是我在创建工件时指定的文件。 当我在IDE中打开manifest时,它会正确显示所有内容,但在创建jar之后,我会得到一个全新的manifest文件。 我尝试了其他答案的每一个解决方案,但仍然没有得到正确的答案。为什么在Intellij中创建一个简单的jar是一个地狱般的任务,它本来是用来帮助开发人员的! 有

  • 我试图在NetBeans中建立一个胖罐子。当我点击clean时,它显示以下错误: C:\workspace\travel_agency\nbproject\build-impl.xml:63:源资源不存在:C:\workspace\travel_agency\dist\nblibraries.properties 然后单击错误,它会将我发送到build-imple.xml文件中的以下行:

  • 在运行Java8和Gradle6.3的Linux机器上,我需要构建一个由库混合而成的fat jar,一些库来自Maven Central,其他库来自位于存储库根部的本地目录,以及我的和: 运行和之后,如果我可以看到JAR中没有包含任何依赖项。 我的最终目标是使我的项目可执行为。我该怎么解决这个?

  • 我对如何使用Gradle制作胖罐做了很多研究。但是,我无法弄清楚如何使用Kotlin DSL和插件。我有这个代码: 但是我不知道如何为胖罐子清单指定主类。我遵循的教程是这样做的: 但这是Groovy DSL,而不是Kotlin DSL,我还不太熟悉Kotlin的DSL,所以我不知道如何将其转换为Kotlin DSL。非常感谢你的帮助。