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

How to include specific folder in the Maven generated jar?

我有以下 Maven 项目结构:

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

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

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

使用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 位置,请在 <build> 下的 <plugin> 中包含以下内容:

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