【问题标题】:Maven copies folder content at the root of jar when generatingMaven在生成时复制jar根目录下的文件夹内容
【发布时间】:2020-04-19 22:23:08
【问题描述】:

晚上好, 我正在创建一个 Java 项目并尝试使用 maven 构建它。该项目需要 LWJGL 库,此外,我在 pom.xml 中添加了相关的依赖项。但是,我还需要在我的项目中包含本地 LWJGL 库。为此,我在与 src 文件夹相同的分支中创建了一个名为 native 的文件夹,并将本机库放入其中。我使用以下代码告诉 maven 将该文件夹包含在 jar 中:

<resources>
  <resource>
    <filtering>false</filtering>
    <directory>${basedir}/native</directory>
    <includes>
      <include>**/*.*</include>
    </includes>
  </resource>
</resources>

我使用 maven 资源插件来定义我希望资源在生成的 jar 中的位置(在本机文件夹下)。

<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 库被很好地打包,但我的本地库都被复制到我的 Jar 的根目录中,我无法解释原因。 出于明显的记忆原因,我不希望这种情况发生,并且我不想手动删除它们。 关于如何解决这个问题的任何想法? 提前致谢。

【问题讨论】:

    标签: java maven jar lwjgl


    【解决方案1】:

    如果你想在你的罐子里放另一个罐子,解决办法是做一个胖罐子。

    这里是一个例子。

            <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>
    

    但我不确定你是否真的想要那个... 是否可以在类路径中包含 jars 或作为 maven 依赖项?

    <!-- https://mvnrepository.com/artifact/org.lwjgl/lwjgl -->
     <dependency>
         <groupId>org.lwjgl</groupId>
         <artifactId>lwjgl</artifactId>
         <version>3.1.0</version>
     </dependency>
    

    【讨论】:

    • 嗨,谢谢你的回答,事实上,我已经尝试过了,打包的罐子,但本地文件夹中的所有本地库都复制到了罐子的根目录,知道为什么吗?跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    • 2015-05-29
    • 2017-09-25
    • 2011-06-09
    • 1970-01-01
    • 2015-04-19
    相关资源
    最近更新 更多