1

我需要使用公司本地的 Maven 存储库,仅此而已。现在,Super POM 包含 repo1.maven.org/maven2 - 我想关闭它。

现在,http ://maven.apache.org/guides/introduction/introduction-to-the-pom.html 说“所有 POM 都扩展了 Super POM,除非明确设置”。

我如何明确设置它?

(Maven 3.0.4)

4

3 回答 3

3

我假设,“本地存储库”是指公司/办公室中可用的存储库,而不是 $HOME/.m2/repository 中的本地存储库。

在用户的 settings.xml 文件中定义您的存储库作为所有存储库的镜像就可以了:

  <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      http://maven.apache.org/xsd/settings-1.0.0.xsd">

      <mirrors>
        <mirror>
          <id>companyrepo</id>
          <url>http://localrepo.com/repo</url>
          <mirrorOf>*</mirrorOf>
        </mirror>
      </mirrors>
  </settings>

这样每个项目都将从 Super POM 继承,但 Maven 不会连接到 repo1.maven.org

于 2012-04-17T13:00:56.210 回答
0

我的理解是,Super POM 为所有 maven POM 提供了广泛使用的功能,除非项目 POM 明确提供了该功能(例如,有点像 Java 中的 Object 类)。

因此,为避免使用公共存储库,您可以指定要在 POM 中使用的(本地)存储库。但是,更好的方法是在 settings.xml 文件中指定本地存储库 - 这允许您使用密码保护本地存储库,而无需将用户名/密码提交到源代码存储库并手动共享它们。

于 2012-04-17T13:01:55.380 回答
0

您正在寻找的是 Maven 的离线模式。使用控制台调用 Maven 时,可以通过-o或选项启用。--offline如果您真的想一直启用它,请添加<offline>true</offline>到您的settings.xml.

如果您(出于某种原因)不能使用离线模式,最极端的选择是覆盖centralid 的存储库定义。例子:

<repository>
  <id>central</id>
  <url>file://C:\tmprepo</url>
</repository>

我推荐基于离线模式的解决方案。它干净而清晰。

于 2012-04-17T13:05:00.823 回答