我有一个项目,其中有多个.jar
文件。在过去,我有一个build.xml
文件,我在Ant
中运行它,它从这些多个jar中创建了一个新的jar,这个全新的jar被称为依赖项。
现在我切换到maven,我想知道我如何才能maven这个。换句话说,如何告诉maven将多个jar构建到一个jar中,然后将其作为依赖项引用?为了使内容更扎实,我将分享我的文件夹结构:
+- mainProject
+- pom.xml
+- someGroup
| +- pom.xml <- refer here
| +- sampleModule1
| | +- pom.xml <- build here
| | +- build.xml
| | +- first.jar
| | +- second.jar
我的一个想法是告诉maven调用build.xml
,它将从这两个jar中创建新的jar,然后将其用作依赖项,如:
<dependency>
<groupId>someGroup</groupId>
<artifactId>org.boofcv</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/../shared/org.boofcv/brand-new.jar</systemPath>
</dependency>
然而,我怀疑它会起作用,因为可能会出现先有鸡还是先有蛋的问题。当我调用maven install时,创建新.jar
的任务可能发生在maven将其作为依赖项查找之后,从而导致错误。
有人知道解决这个问题的方法吗?
在进一步搜索之后,我了解到不可能调用Ant脚本将这些jar构建到一个jar中,同时告诉Maven使用最终的jar。请看下面的引用:
"当使用Maven Antrun Plugin时,Maven试图解决依赖关系来为Antrun调用构建类路径,因此您面临一个鸡和蛋的问题:您不能声明在Antrun执行期间创建的依赖关系,该依赖关系需要运行。这行不通。"
相反,我发现了一个名为maven-shade-plugin
的插件。它从小的jar中创建一个大的jar,我可以在以后的顶级pom.xml
中使用它作为依赖项,这是我所要求的。