Maven在jar中包装项目内存储库依赖项

时间:2017-04-06 06:23:48

标签: java maven jar maven-dependency-plugin uberjar

我正在使用项目内存储库依赖项解决方案在我的Maven项目中包含第三方jar作为依赖项。我已按照this blog上的说明进行操作。

现在,我希望当我将Maven项目打包到jar中时,创建的jar应该有一个包含第三方jar的lib文件夹。但是,我不希望将其他依赖项打包在jar中。 (我不想要一个包含所有依赖关系的胖jar,我只想要一个包含在其中的第三方依赖jar的jar。)

我一直在尝试使用maven-dependency-plugin和maven-jar-plugin,但我还没有达到我想要的效果。

有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:1)

您可以使用<includeArtifactIds>(查看here),如下所示,此插件将提供许多选项,以包含ArtifactId(即<includeGroupIds>)或groupId({{1等等...

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
      <executions>
         <execution>
             <id>copy-dependencies</id>
             <phase>prepare-package</phase>
              <goals>
                  <goal>copy-dependencies</goal>
              </goals>
              <configuration>
             <outputDirectory>${project.build.directory}/
                             classes/lib</outputDirectory>
                <overWriteReleases>false</overWriteReleases>
                <overWriteSnapshots>false</overWriteSnapshots>
                <overWriteIfNewer>true</overWriteIfNewer>
                <includeArtifactIds>YOUR_THIRDPARTY_JAR_NAME</includeArtifactIds>
                </configuration>
            </execution>
        </executions>
    </plugin>

因此,上面的代码会将YOUR_THIRDPARTY_JAR_NAME.jar添加到您的最终.jar文件的lib文件夹中。

答案 1 :(得分:0)

看看Maven Assembly Plugin。它允许过滤包含的依赖项,因此您可以选择要包含在程序集中的deps