晚上好, 我正在创建一个 Java 项目并尝试使用 Maven 构建它。该项目需要 LWJGL 库,另外,我在 pom.xml 中添加了相关依赖项。但是,我还需要将 native LWJGL 库包含到我的项目中。为此,我在与 src 文件夹相同的分支中创建了一个名为 native 的文件夹,并将 native 库放入其中。我使用以下代码告诉 maven 将该文件夹包含在 jar 中:
<resources>
<resource>
<filtering>false</filtering>
<directory>${basedir}/native</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>
我使用 Maven 资源插件来定义我希望资源在生成的 jar 中的位置(在 native 文件夹下)。
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<outputDirectory>${project.build.outputDirectory}\native</outputDirectory>
</configuration>
</plugin>
然后我使用 maven package
命令生成 jar。一切在生成的 jar 中运行良好,但我也需要将我的 LWJGL 库打包在其中。另外,我尝试使用 maven- assembly-plugin 、 maven-dependency-plugin 和 maven-shade-plugin 。在这三种情况下,jar 库都打包得很好,但我的 native 库都被复制到我的 Jar 的根目录中,我无法解释原因。
出于明显的内存原因,我不希望发生这种情况,并且我不想手动删除它们。
关于如何解决这个问题有什么想法吗?
提前致谢。
最佳答案
如果您需要在 jar 中包含另一个 jar ,解决方案是制作一个 fat jar 子。
这是一个例子。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<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>
但我不确定你是否真的想要那个...... 是否可以将 jar 包含在类路径中或作为 Maven 依赖项?
<!-- https://mvnrepository.com/artifact/org.lwjgl/lwjgl -->
<dependency>
<groupId>org.lwjgl</groupId>
<artifactId>lwjgl</artifactId>
<version>3.1.0</version>
</dependency>
关于java - Maven在生成时复制jar根目录下的文件夹内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61312432/