2011-02-04 57 views
10

我们有:Eclipse 3.6,Maven(M2Eclipse),两个项目(ProjectA和ProjectB)与pom.xml。是否有使用“工作区项目”的Maven存储库的方法?

ProjectB依赖于ProjectA(使用maven)。

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

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

好的,补充。但是,如果我们做“maven包”或其他插件目标......依赖没有解决。 我们有出头的那样:

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

,当然它不能得到解决。

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

P.S.为什么我不使用“maven install”?好吧,这是100%的方法,但是当我做了很多小的改动时,太长时间做过量操作。

P.S.S. “工作区项目”我们可以看到Window - > Show View - > Maven Repositories。

回答

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

    运行>运行配置> Maven构建>新建>选择项目b>检查“解决工作空间神器”>设定的目标为package

    选择脱机复选框为好。

  2. 也许,你需要提供了projectA的确切version在项目B依赖标签。否则,它可能会寻找Maven公共存储库以取得最新版本。

希望这会有所帮助。

+0

1.不帮忙。 “下载:http://repo1.maven.org/maven2/Project A .... pom”。尝试使用公共存储库解决。立即检查离线写入“ProjectA的POM缺失,没有可用的依赖信息”。 2.提供版本。嗯...问题不在公共存储库中。问题在于解决工作区中的依赖关系项目,并且未安装到本地存储库。 – Alexander 2011-02-07 05:58:04

0

试试这个(在项目B):

Maven > Enable Workspace Resolution 

类似的问题在这里解决了这种方式。

2

我认为从Eclipse运行'Maven包'或类似目标的想法是做任何maven从命令行执行的操作。你提供的场景也不会在命令行上工作。

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

唯一的例外是,如果两个项目都驻留在同一个反应器中,那么这两个项目都是其他“父”项目的模块。在这种情况下,触发某个子模块上的Maven目标可能能够解决依赖问题。不是100%确定。

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

+0

如果M2Eclipse的设置正确,在Eclipse中按下“Project> Build All”就会看起来好像两个项目都在同一个反应堆中一样,因此会起作用。正如你正确猜测的那样,只有当你尝试“Run as> Maven build ...”时,你才会遇到麻烦,因为它会启动命令行Maven。 – JBert 2013-12-18 16:14:15

相关问题