在我的项目中,我正在使用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。
答案 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" />