maven中具有相同工件的多个存储库

时间:2013-05-06 22:22:01

标签: java maven maven-2

我已经对log4j进行了一些修改,并希望我的项目使用我的本地版本而不是远程maven仓库中的版本,所以我将我的项目声明为pom.xml中的本地仓库以及我的远程仓库。依赖关系:

 <repository>
      <id>my-log4j</id>
      <name>my log4j</name>
      <url>file:///...</url>
 </repository>
 <repository>
      <id>remote</id>
      <name>remote repo</name>
      <url>http://...</url>
 </repository>

maven按预期复制了我本地仓库中的文件,但随后又从远程仓库下载了log4j并覆盖了之前的文件。有没有办法排除某些工件从远程仓库下载?

另外,maven如何检测my-log4j的变化?如何在编译期间每次都使maven复制my-log4j工件?

2 个答案:

答案 0 :(得分:1)

如果maven查找工件,它首先会在您的本地存储库中查找,您不必指定它(您可以在settings.xml中指定本地存储库的位置)。

您已经回答了以下问题:如果您必须更改第三方工件,请将其重命名(已在pom.xml中),如my-log4jlog4j-my-patch。然后它不会与原始文物碰撞。

答案 1 :(得分:1)

如果您制作了某个内容的自定义版本,请为其提供自定义版本号。

例如,如果您修改log4j-1.2.17供自己使用,请在处理时为其提供版本1.2.17.JRR.1和以下数字。

您在计算机上构建它们,当您运行install目标时,它会将它们放在您的本地仓库中。如果您的组有一个共享仓库,那么它也可以在那里部署,并且永远不会与Apache版本混淆。

永远不会在远程仓库中找到它,就在您的身上。