【发布时间】:2016-11-03 11:49:32
【问题描述】:
我有一个项目,其中包含多个 .jar 文件。过去,我有一个 build.xml 文件,我正在通过 Ant 运行它,它正在从这些多个 jar 中创建一个新 jar,而这个全新的 jar 被称为依赖项。
现在我切换到 maven,我想知道如何将它 mavenize。换句话说,如何告诉 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 将其作为依赖项查找后进行,从而导致错误。
有人知道解决方法吗?
【问题讨论】:
-
停止使用 systemPath...方向错误。你能解释一下“参考这里”是什么意思吗?你能做一个你当前状态的示例项目并将它放在 github 上吗...
-
我正在使用本地存储库,我想用其他两个 jar 构建一个 jar。稍后我想使用这个新的 jar 作为依赖。很简单。
-
local repository是什么意思?$HOME/.m2/repository?可以通过 maven-shade-plugin 从多个 jar 构建一个 jar... -
是的,确切地说,我的意思是
.m2/repository。感谢您的指导,如果您将此作为答案,我会接受。 -
如果您使用本地缓存,请不要使用
systemPath,因为这是错误的..