0

我对 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 按预期从我的本地 repo 复制了文件,但随后它再次从远程 repo 下载了 log4j 并覆盖了早期的文件。有没有办法从远程仓库下载某些工件?

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

4

2 回答 2

1

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

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

于 2013-05-06T22:32:40.753 回答
1

如果你制作了某个东西的自定义版本,你就给它一个自定义版本号。

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

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

这永远不会在远程仓库中找到,只是在你的仓库中。

于 2013-05-06T22:41:12.753 回答