gpt4 book ai didi

java - 配置 Maven Shade minimizeJar 以包含类文件

转载 作者:搜寻专家 更新时间:2023-10-30 21:18:28 25 4
gpt4 key购买 nike

我试图通过使用 Maven Shade PluginminimizeJar 来最小化 UberJar 的大小。看起来 minimizeJar 只包含在代码中静态导入的类(我怀疑这是因为我在 org\apache\commons 的 uber jar 中看到了 LogFactory.class\logging\ 但没有包含 impl 包的类,因此抛出 java.lang.ClassNotFoundException: org.apache.commons.logging.impl.LogFactoryImpl当我运行 uber-jar 时)。

有什么方法可以告诉 Maven 的 Shade 插件将指定的包包含到最终的 jar 中,而不管 minimizeJar 建议什么?

这是我正在尝试的 pom 片段:

    <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<minimizeJar>true</minimizeJar>
<filters>
<filter>
<artifact>commons-logging:commons-logging</artifact>
<includes>
<include>org/apache/commons/logging/**</include>
</includes>
</filter>
</filters>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.myproject.Main</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>

最佳答案

此功能已添加到 maven-shade-plugin(刚刚发布)的 1.6 版中。 minimizeJar 现在不会删除专门包含在过滤器中的类。请注意,在过滤器中包含 Artifact 的某些类将排除该 Artifact 的非指定类,因此请务必包含您需要的所有类。

这是一个示例插件配置:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<minimizeJar>true</minimizeJar>
<filters>
<filter>
<artifact>log4j:log4j</artifact>
<includes>
<include>**</include>
</includes>
</filter>
<filter>
<artifact>commons-logging:commons-logging</artifact>
<includes>
<include>**</include>
</includes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>

关于java - 配置 Maven Shade minimizeJar 以包含类文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8698814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com