我是Maven的新手。我想使用以下设置:

1)远程资源库以下载公共工件

2)一个用于下载工件的共享本地存储库,通过将以下内容添加到settings.xml可以很好地工作:

<localRepository>C:/m2repo</localRepository>


3)现在,我还想拥有一个用于引用工件的资源库
来自单个项目,例如老式的“ lib”文件夹。

因此,我在项目的pom.xml中添加了以下内容:

<repository>
  <id>repo</id>
  <name>repo</name>
  <releases>
    <enabled>true</enabled>
    <checksumPolicy>ignore</checksumPolicy>
  </releases>
  <url>${project.baseUri}repo</url>
</repository>


我已经将一些jar部署到“ repo”文件夹中,但是当我将它们作为依赖项添加到pom.xml中时,无法解析它们。 Maven仅查找共享存储库和远程存储库。当我将“ repo”的内容复制到共享的“ m2repo”时,它可以工作。我是否缺少某些东西,或者根本无法进行此设置?

最佳答案

尽管可能,但我个人认为这样做并不是一个好习惯。根据您的用法,这篇文章会有所帮助:http://blog.sonatype.com/people/2009/02/why-putting-repositories-in-your-poms-is-a-bad-idea。您还需要一个可复制且可移植的项目,this question讨论了此相关主题。请不要仅出于可移植性而将这些jar签入VCS!

如果您仍然坚持,我会尽力提供帮助。为了使模型正常工作,“回购文件夹”必须遵循定义的here结构。

即使您的“ repo文件夹”是本地文件结构,Maven仍会将其视为远程存储库,就像maven Central一样。这意味着,无论何时构建项目,Maven也会尝试将jar从“ repo文件夹”下载到.m2存储库:


下载:文件:/j/my-project/my-local-repo/com/google/guava/guava/14.0.1/guava-14.0.1.pom
已下载:file:/j/my-project/my-local-repo/com/google/guava/guava/14.0.1/guava-14.0.1.pom(6 KB,276.3 KB /秒)
下载:http://repo.maven.apache.org/maven2/com/google/google/1/google-1.pom
已下载:http://repo.maven.apache.org/maven2/com/google/google/1/google-1.pom(2 KB,10.4 KB /秒)


您可以看到番石榴罐将从“ repo文件夹”到我的.m2存储库为downloaded,因为它可以从我的“ repo文件夹”中获得。

07-25 22:56
查看更多