如何在 Maven 生成的 jar 中包含特定文件夹?

Posted

技术标签:

【中文标题】如何在 Maven 生成的 jar 中包含特定文件夹?【英文标题】:How to include specific folder in the Maven generated jar? 【发布时间】:2017-08-23 06:24:11 【问题描述】:

我有以下 Maven 项目结构:

$basedir/ 
  - pom.xml
  - lib/
    - dependency1.jar
    - dependency2.jar
    - ...
  - src/
    - main/..
    - test/..
  - target/
    - classes/..
    - blah/
    - uggh/

如何修改 pom 文件以在生成的输出 jar 中包含整个 lib 文件夹(及其内容)?

此文件夹包含不能成为 Maven 存储库一部分的第三方 jar。

【问题讨论】:

真的有一个包含 jar 文件的 lib 文件夹吗?如果是,你做错了 Maven...应该被定义为依赖项但不是项目的一部分... 【参考方案1】:

使用 maven-jar-plugin 将依赖项从 lib 复制到您的 fat jar 中

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>

                  <archive>
                    <manifest>
                    <addClasspath>true</addClasspath>
                    <mainClass>your.main.class</mainClass>
                    <classpathPrefix>lib/</classpathPrefix>
                    </manifest>
                  </archive>
                </configuration>
            </plugin>

【讨论】:

谢谢,这成功了。如果我还想指定确切的目标位置?例如:/lib/....jars【参考方案2】:

要指定确切的 jar 位置,请在 &lt;plugin&gt; 下的 &lt;build&gt; 下添加以下内容:

<configuration>             
  <outputDirectory>
    $project.basedir/../build/jars
  </outputDirectory>
</configuration>

【讨论】:

以上是关于如何在 Maven 生成的 jar 中包含特定文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 maven jar 构建过程中包含外部 jar?

如何在 Maven 项目中包含本地 jar 文件 [重复]

在 Maven 项目中包含本地 jar 文件 - 找不到文件

为啥 maven 不在我的 jar 中包含 JSP 文件?

收到一个主 jar 文件,其中包含需要在类路径中的其他 jar 文件。在我的 Maven 项目中包含这个主 jar 的最佳方法是啥?

Maven - 在 jar 中包含依赖库而不解包依赖项?