是使用“Workspace project”maven存储库的任何方法吗?

时间:2011-02-04 08:36:16

标签: eclipse maven m2eclipse

我们有:Eclipse 3.6,Maven(M2Eclipse),两个项目(ProjectA和ProjectB)和pom.xml。

ProjectB依赖于ProjectA(使用maven)。

  1. 如果我们将ProjectA安装到本地存储库(maven安装),ProjectB解决依赖关系确定。

  2. 如果我们不将ProjectA安装到本地存储库。在Maven POM编辑器中,我们将ProjectA添加为ProjectB的依赖项(M2Eclipse使用“工作区项目”存储库来解决此依赖关系)。

  3. 好的,补充道。但是,如果我们做“maven包”或其他插件目标...依赖性没有解决。 我们有类似的东西:

    下载:http://repo1.maven.org/maven2/Artifact/ProjectA/maven-metadata.xml

    当然无法解决。

    现在是问题。如何在构建ProjectB时使用“Workspace项目”?

    P.S。为什么我不使用“maven install”?好的,它是100%的方法,但是当我在几个中做了很多小的改动时,做太多的操作太长了。

    P.S.S。 “工作区项目”我们可以看到Window - >显示视图 - > Maven存储库。

3 个答案:

答案 0 :(得分:2)

我认为从Eclipse运行'Maven包'或类似目标的想法是做任何maven在从命令行运行时会做的事情。您提供的方案也不会在命令行上运行。

如果项目B依赖于项目A(通过pom.xml),则意味着项目A应该在存储库中可用。无论是本地(通过mvn安装)还是远程通过(mvn deploy)无关紧要,但mvn包还不够。这只会将一个包放在/ target文件夹中。

唯一的例外是,如果两个项目都位于我想的同一个反应堆中,那么这两个项目都是其他“父”项目的模块。在这种情况下,触发其中一个子模块上的maven目标可能能够解决依赖关系。不过100%肯定。

回到你的问题:“现在是问题。如何在构建ProjectB时使用”Workspace项目“?”不,我不这么认为。

答案 1 :(得分:1)

  1. 应解决工作区依赖关系。试试这个,

      

    运行>运行配置> Maven Build>新>选择项目B>检查“解析工作区工件”>将目标设为package

         

    也选择离线复选框。

  2. 也许,您需要在projectB依赖项标记中提供精确的version projectA。否则,它可能会向Maven公共存储库提供最新信息。

  3. 希望这有帮助。

答案 2 :(得分:0)

试试这个(在ProjectB中):

Maven > Enable Workspace Resolution

这样就解决了类似的问题。