Maven - 创建可运行的 jar 并从依赖库中提取 类
Maven - Create runnable jar and extract classes from dependent libraries
是否有一个 maven 插件来创建一个可运行的 jar,它从依赖库中提取所有使用过的类?
我需要这个的主要原因如下:我开发了一个 Java Web Start 应用程序,如果我使用 shade 插件或 jar 插件创建 jar,JAR 将 >13MB 或者 shade-plugin 甚至忘记了一些导致 ClassNotFoundException 的 类。
使用我的旧 ant 脚本,JAR 只有 1,3MB 小,它包含所有必需的 类 并且下载和启动速度非常快。但是为了使用技术,我想切换到 Maven。
非常感谢!
我当前的 pom:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<minimizeJar>true</minimizeJar>
<shadedClassifierName>min</shadedClassifierName>
<shadedArtifactAttached>true</shadedArtifactAttached>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
我需要添加什么,例如 apache chemistry opencmis 库(现在 类 将被提取,但正如我所说,一些 类 仍然缺失,opencmis 使用它自己)?
请查看此 question 和建议的解决方法 - 引用所需的 类 以避免被 minimizeJar 选项排除。
是否有一个 maven 插件来创建一个可运行的 jar,它从依赖库中提取所有使用过的类?
我需要这个的主要原因如下:我开发了一个 Java Web Start 应用程序,如果我使用 shade 插件或 jar 插件创建 jar,JAR 将 >13MB 或者 shade-plugin 甚至忘记了一些导致 ClassNotFoundException 的 类。
使用我的旧 ant 脚本,JAR 只有 1,3MB 小,它包含所有必需的 类 并且下载和启动速度非常快。但是为了使用技术,我想切换到 Maven。 非常感谢!
我当前的 pom:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<minimizeJar>true</minimizeJar>
<shadedClassifierName>min</shadedClassifierName>
<shadedArtifactAttached>true</shadedArtifactAttached>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
我需要添加什么,例如 apache chemistry opencmis 库(现在 类 将被提取,但正如我所说,一些 类 仍然缺失,opencmis 使用它自己)?
请查看此 question 和建议的解决方法 - 引用所需的 类 以避免被 minimizeJar 选项排除。