2013-05-06 75 views
0

我对log4j做了一些修改,希望我的项目使用本地版本而不是远程maven仓库的版本,所以我将项目声明为pom.xml中的本地仓库除了我其他依赖远程回购:在maven中有相同工件的多个仓库

<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> 

行家从我的本地回购复制文件符合市场预期,但随后它从远程回购再次下载Log4j和改写先前的文件。有没有办法从远程回购中下载某些工件?

另外,maven如何检测my-log4j的更改?我怎样才能让Maven在编译期间每次拷贝my-log4j文件?

回答

1

如果您制作了一些自定义版本的东西,您可以给它一个自定义版本号。

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

您在计算机上构建它们,当您运行install目标时,它会将它们放入本地回购。如果您的团队拥有共享的回购协议,那么它可以部署在那里,而不会与Apache版本混淆。

这绝不会在远程回购中找到,只是在你的。

1

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

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