当前位置: 首页 > 知识库问答 >
问题:

设置中的Maven本地存储库。xml vs pom。xml

张权
2023-03-14

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

1) 用于下载公共工件的远程存储库

2) 下载工件的共享本地存储库,通过将以下内容添加到设置中可以很好地工作。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”时,它就可以工作了。我错过了什么还是这个设置根本不可能?

共有2个答案

任宾鸿
2023-03-14

问题的原因是存储库在我的设置中的镜像。xml,我已将镜像设置为所有存储库:

<mirror>
  <mirrorOf>*</mirrorOf>
</mirror>

我将其更改为仅外部存储库:

<mirror>   
  <mirrorOf>external:*</mirrorOf> 
</mirror>

现在,我的工件可以在“项目”存储库中找到。然而,Maven的行为与我预期的不同,正如ceilfors所写,文件系统存储库被视为与远程存储库一样——工件从那里复制到本地存储库,这导致本地存储库和其他文件系统存储库之间的JAR重复。所以我看到设置不理想。然而,在我的例子中,我仍然发现这是使项目专业化的最快方法

岳永思
2023-03-14

虽然可能,但我个人认为这不是一个好的做法。根据您的使用情况,此帖子将很有帮助:http://blog.sonatype.com/people/2009/02/why-putting-repositories-in-your-poms-is-a-bad-idea.您还需要一个可复制和可移植的项目,此问题讨论了此相关主题。请不要仅仅为了便于携带而将这些JAR签入您的VCS!

如果你仍然坚持,我会尽力帮助你。要使模型正常工作,您的“repo文件夹”必须遵循此处定义的结构。

即使您的“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下载:文件:/j/my project/my local repo/com/google/guava/guava/14.0.1/guava-14.0.1。pom(每秒276.3 KB时为6 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(每秒10.4 KB时为2 KB)

您可以看到guava jar将从“repo文件夹”下载到我的. m2存储库,因为它可以从我的“repo文件夹”中获得。

 类似资料:
  • 在我的java类中,我收到了以下编译时错误。 我在pom.xml文件中也提到了依赖性。 请帮助我为什么即使在pom时也找不到依赖项。xml具有依赖关系。

  • 问题内容: 可以在settings.xml中设置Maven本地存储库: 并且可以在命令行上设置Maven本地存储库: 是否可以在pom.xml本身中指定? 注意:我想在pom.xml中指定一种方法,其中maven最初在其中搜索工件(默认情况下为),而maven通过以下方式安装工件(默认情况下为)。 问题答案: 根据《Maven POM参考》 和《使用多个存储库指南》,您也可以在其中指定存储库。 您

  • 问题内容: 我想创建本地Maven存储库。我做了以下步骤: 在中安装了Maven插件 在apache服务器中创建了一个文件夹localrepository,可使用访问 在我的项目中,我提供了 但这并没有解决上的jar 是否需要提供存储库? 问题答案: 使用具有默认配置的Web服务器来设置简单的存储库。关键是目录结构。该文档没有明确提及它,但其结构与本地存储库相同。 要建立一个内部存储库,只需要您有

  • 问题内容: 我的Maven配置有一个小问题。此处的所有其他问题和答案都不能解决我的问题,因此,我开始了一个新问题。 我的问题是,我的Maven没有使用本地存储库。它总是从远程存储库中获取工件。 当下载工件或构建项目时,它将安装在本地存储库中,因此路径正确。 问题是:当我构建一个SNAPSHOT项目时,它仅安装在本地存储库中(应该是这样,不想每次都将其发布在我的关系上)。当我在pom.xml中构建另

  • 我的Maven配置有一个小问题。这里所有其他的问题和答案都没有解决我的问题,所以我要开始一个新的问题。 我的问题是,我的Maven没有使用本地存储库。它总是从远程存储库中获取工件。 当下载工件或构建项目时,它被安装在本地存储库中,因此路径是正确的。 问题是:当我构建一个快照项目时,它只安装在本地存储库中(应该是这样的,不要每次都在我的nexus上发布)。当我构建另一个项目时,在pom.xml中有前

  • 我有在源存储库中提交的jar,我需要将其用作maven项目中的依赖项。经过研究,添加特定于项目的本地存储库似乎是最干净的方式。请注意,此存储库将特定于此项目,不同于我机器上. m2目录下的本地存储库。pom是war类型,我已经像下面的描述一样定义了存储库: 在lib目录中是jar的路径,没有其他文件: com/my公司/东西/我的神器/1.0.0/my-artifact-1.0.0.jar. 此依