java - Maven在生成时复制jar根目录下的文件夹内容

标签 java maven jar lwjgl

晚上好, 我正在创建一个 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/

相关文章:

Java JDBC 连接 ClassNotFoundException 错误

java - 在 Java 中重新启动 handler.postDelayed

java - 无法找到 ServletContext 中定义的名为 XXX 的 bean 的类 XXX

java - 如何替换 blueprint/context.xml 中加载的 cfg 文件中的文本值

java - 维护 GWT Web 应用程序的构建版本号

java - 如何可信地分发java桌面应用程序?

maven - 如何在 Maven 中设置特定的部署顺序?

java - IntelliJ 检查给出 "Cannot resolve symbol"但仍编译代码

java - 在tomcat服务器中加载Jar

Java - 在 JAR 文件中写入 txt