我们有:Eclipse 3.6,Maven(M2Eclipse),两个项目(ProjectA和ProjectB)和pom.xml。
ProjectB依赖于ProjectA(使用maven)。
如果我们将ProjectA安装到本地存储库(maven安装),ProjectB解决依赖关系确定。
如果我们不将ProjectA安装到本地存储库。在Maven POM编辑器中,我们将ProjectA添加为ProjectB的依赖项(M2Eclipse使用“工作区项目”存储库来解决此依赖关系)。
好的,补充道。但是,如果我们做“maven包”或其他插件目标...依赖性没有解决。 我们有类似的东西:
下载:http://repo1.maven.org/maven2/Artifact/ProjectA/maven-metadata.xml
当然无法解决。
现在是问题。如何在构建ProjectB时使用“Workspace项目”?
P.S。为什么我不使用“maven install”?好的,它是100%的方法,但是当我在几个中做了很多小的改动时,做太多的操作太长了。
P.S.S。 “工作区项目”我们可以看到Window - >显示视图 - > Maven存储库。
答案 0 :(得分:2)
我认为从Eclipse运行'Maven包'或类似目标的想法是做任何maven在从命令行运行时会做的事情。您提供的方案也不会在命令行上运行。
如果项目B依赖于项目A(通过pom.xml),则意味着项目A应该在存储库中可用。无论是本地(通过mvn安装)还是远程通过(mvn deploy)无关紧要,但mvn包还不够。这只会将一个包放在/ target文件夹中。
唯一的例外是,如果两个项目都位于我想的同一个反应堆中,那么这两个项目都是其他“父”项目的模块。在这种情况下,触发其中一个子模块上的maven目标可能能够解决依赖关系。不过100%肯定。
回到你的问题:“现在是问题。如何在构建ProjectB时使用”Workspace项目“?”不,我不这么认为。
答案 1 :(得分:1)
应解决工作区依赖关系。试试这个,
运行>运行配置> Maven Build>新>选择项目B>检查“解析工作区工件”>将目标设为
package
也选择离线复选框。
也许,您需要在projectB依赖项标记中提供精确的version
projectA。否则,它可能会向Maven公共存储库提供最新信息。
希望这有帮助。
答案 2 :(得分:0)
试试这个(在ProjectB中):
Maven > Enable Workspace Resolution
这样就解决了类似的问题。