我已经对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工件?
答案 0 :(得分:1)
如果maven查找工件,它首先会在您的本地存储库中查找,您不必指定它(您可以在settings.xml
中指定本地存储库的位置)。
您已经回答了以下问题:如果您必须更改第三方工件,请将其重命名(已在pom.xml
中),如my-log4j
或log4j-my-patch
。然后它不会与原始文物碰撞。
答案 1 :(得分:1)
如果您制作了某个内容的自定义版本,请为其提供自定义版本号。
例如,如果您修改log4j-1.2.17供自己使用,请在处理时为其提供版本1.2.17.JRR.1和以下数字。
您在计算机上构建它们,当您运行install
目标时,它会将它们放在您的本地仓库中。如果您的组有一个共享仓库,那么它也可以在那里部署,并且永远不会与Apache版本混淆。
永远不会在远程仓库中找到它,就在您的身上。