如何在pom中引用第三方jar来创建超级jar

时间:2013-06-24 11:43:00

标签: java maven jar

在我的项目中,我正在使用maven,因为我在项目pom.xml中添加了第三方库依赖项

<dependency>
    <groupId>com.google.android</groupId>
    <artifactId>support-v4</artifactId>
    <version>r6</version>
</dependency>

现在所以这个jar在编译时进入我的本地仓库我可以看到maven依赖。现在我想制作一个超级jar,包括三个jar文件,两个在我的eclipse工作区,一个在本地repo。 所以我可以使用下面的代码

包含两个文件
<property name="First.jar" value="${basedir}/../Some/bin/SomeFirst-${project.version}.jar" />
<available file="${First.jar}" type="file" property="First-found" />
<fail unless="First-found" message="ERROR: failed to find First.jar, looked here: ${First.jar}" />

<!-- verify second.jar is available -->
<property name="second.jar" value="${basedir}/bin/some-project-name-${project.version}.jar" />
<available file="${second.jar}" type="file" property="second-found" />
<fail unless="second-found" message="ERROR: failed to find second.jar, looked here: ${second.jar}" />



<!-- glue all jars together into a super jar -->
<zip destfile="${super.jar}">
    <zipfileset src="${Second.jar}" />
    <zipfileset src="${First.jar}" excludes="META-INF/*,connectors/*" />
    <zipfileset src="Need third file relative path here " excludes="META-INF/*" />
</zip>

我可以使用完整的路径,如:

<zipfileset src="C:/Users/xxx/.m2/repository/com/google/android/support-v4/r7/support-v4-r7.jar"  /> 

但我相信这对其他系统无效。 那么我怎样才能将support-v4-r7.jar从本地仓库引用到Pom.xml。

3 个答案:

答案 0 :(得分:1)

在Maven中创建“超级JAR”的简单方法是使用Maven "shade" plugin。这将生成一个JAR,其中包含所有相关JAR的“内容”。有重组内容和排除内容的各种选项。插件文档应该足以让您入门。

有可能通过Mavan Ant插件(你似乎正在做)这样做,但这不是一个好的解决方案。首先,如果/当您更改依赖项时,您的构建可能会中断。

答案 1 :(得分:0)

您可以通过设置

为Maven定义本地存储库
 <localRepository>D:/Maven/LocalRepo</localRepository>   

  config/settings.xml 

成功构建maven项目时所有依赖项都将下载到本地存储库。

在您的情况下,如果您使用自己的jar,可以按如下方式将该jar添加到pom.xml

<dependency>
    <groupId>your.group.id</groupId>
    <artifactId>your.art.id</artifactId>
    <version>SNAPSHOT</version>
    <scope>provided</scope>
</dependency>

答案 2 :(得分:0)

这项改变对我有用

<zipfileset src="${settings.localRepository}/com/google/android/support-v4/r7/support-v4-r7.jar" />