2010-02-23 78 views
1

如果使用的是封闭的仓库,但你的应用程序使用一些依赖外部(行家公共)存储库。知道你的依赖在行家

有没有可以依赖它们是从内部和从外部存储库来产生列表的方式。

或者我必须做手工,把只是内部资料库和依赖关系这些都是外部的,或有你认为会得到更好的结果第三种方式我构建失败。谢谢

编辑

@Pascal Thivent

这里是交易:

比方说,我的项目只使用2依赖性: 第一个是:JUnit的 第二个是:速度

现在让我们假设log4j的是JUnit的的传递依赖(这是我的项目中使用的依赖关系的一个)。

让我们假设速度不包含任何传递依赖。并且可以设想速度在我的公司存储库上,并且我知道junit正在从maven存储库下载,但我不知道log4j,因为我没有将它放在<dependecies>标记中。

有没有一种方法,我可以得到的依赖或东西的清单..这将由他们从coing库或类似这样的东西组依赖关系:

速度 - 企业库 的JUnit - Maven仓库 的log4j - Maven仓库

或者,如果我使用mirrorof指定要使用明确公司资源库,将Maven的告诉我,我失去了它的文物,其中包括传递依赖的人?

TNX

回答

6

我会用dependency:purge-local-repository用于此目的和分析控制台输出从那里依赖性(再)来拆分看。

如果最后使用公司存储库并希望强制Maven将其用于所有请求(即永远不访问公共存储库),那么您应该在settings.xml中声明公司存储库为mirrorOf所有存储库:

<settings> 
    ... 
    <mirrors> 
    <mirror> 
     <id>corporate-repository</id> 
     <mirrorOf>*</mirrorOf> 
     <name>Maven Repository Manager running on repo.mycompany.com</name> 
     <url>http://repo.mycompany.com/proxy</url> 
    </mirror> 
    </mirrors> 
    ... 
</settings> 

但是我也许在这里推断得太多了。

更新:

或者,如果我使用mirrorof指定要使用明确公司资源库,将Maven的告诉我,我失去了它的文物,其中包括传递依赖的人?

是。

+0

@Pascal Thivent谢谢帕斯卡我认为我什么我寻找,跑让我先问问你..清除本地存储库前..我不会清除/运行这个时删除本地仓库里面一世 ? – ant 2010-02-23 09:48:51

+0

@ c0mrade好了,魔力的文件明确表示:*从本地资源库中删除项目的依赖,并可选重新加以解决*所以,是的,这是要删除从本地存储库中的项目依赖(即得。实际上是这个想法)。但是这不应该是一个问题,除非你手动在本地存储库中为这个项目安装了一个工件。如果您有疑问,那么先制作一个备份或本地存储库(例如'cp〜/ .m2/repository〜/ .m2/repository.orig')。 – 2010-02-23 09:56:36

+0

@Pascal Thivent再次感谢你,我想我没有以我想要的方式表达自己,我明白你来自哪里。问题是我们只想使用我们的“公司”存储库,正如你在上面的答案中解释过的那样可以完成的,但事情是我们对公司有一些依赖关系,有些依赖于maven存储库。我想将它们全部下载,以便它们可以上传到企业存储库并仅从那里使用,现在的事情是我不知道从哪里下载哪些依赖关系..如果我知道所有的外部依赖关系,我会下载它们,使用它们从C库 – ant 2010-02-23 10:01:40

0

我猜你必须在你的公司存储库服务器上使用NexusArtifactory才能根据需要将远程存储库中的工件透明地下载到公司存储库中。

如果你想知道,只有你的项目的m2eclipse的传递依赖给人一种依赖关系图,层次吧。

+0

@Chandru我们他们已经开始运行了 – ant 2010-02-23 10:08:06

+0

当您代理远程仓库时,您将只从公共仓库下载一次。 – 2010-02-23 10:20:30