如何在 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>
【讨论】:
谢谢,这成功了。如果我还想指定确切的目标位置?例如:要指定确切的 jar 位置,请在 <plugin>
下的 <build>
下添加以下内容:
<configuration>
<outputDirectory>
$project.basedir/../build/jars
</outputDirectory>
</configuration>
【讨论】:
以上是关于如何在 Maven 生成的 jar 中包含特定文件夹?的主要内容,如果未能解决你的问题,请参考以下文章
在 Maven 项目中包含本地 jar 文件 - 找不到文件
收到一个主 jar 文件,其中包含需要在类路径中的其他 jar 文件。在我的 Maven 项目中包含这个主 jar 的最佳方法是啥?