gpt4 book ai didi

java - Maven 插件创建可执行 jar 与未解压的依赖项 (jar with jars)

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

我阅读了很多构建具有依赖项的可执行 jar 的解决方案(maven 阴影插件、maven 依赖项插件、maven 程序集插件)和所有这些插件解压依赖项 jar 并将它们重新打包到可执行 jar 中。唯一将解压到可执行 jar 中的依赖 jar 打包的插件是一个 jar 插件,但该插件将其运行器代码添加到可执行 jar 中。

是否有任何解决方案可以像这样创建 jar:

├─executable.jar
├──lib/
├───dependency1.jar
├───dependency2.jar
.
.
.

并且该解决方案有效。

最佳答案

最常见的方法是使用 assembly 插件,它允许您以您需要的方式配置打包

<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.somewhere.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>

也可以为配置指定程序集描述符

<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</descriptors>
</configuration>

和 assembly.xml 本身

<assembly>
<id>assembly</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${project.build.outputDirectory}</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
</assembly>

程序集描述符还可以包含依赖部分:

<!-- lib -->
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
</dependencySet>
</dependencySets>

据我了解,您正在寻找最后一个。因为它只是将 jar 文件包含到程序集中而没有进行任何修改。所以最终的解决方案将是这样的:

<assembly>
<id>assembly</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<!-- lib -->
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
</dependencySet>
</dependencySets>
</assembly>

和pom部分:

<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>

关于java - Maven 插件创建可执行 jar 与未解压的依赖项 (jar with jars),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17674784/

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