Maven - 如何设置Super POM

时间:2012-04-17 12:50:17

标签: maven

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

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

我如何明确地设定它?

(Maven 3.0.4)

3 个答案:

答案 0 :(得分:2)

我假设,“本地存储库”是指公司/办公室中可用的存储库,而不是$ 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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

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

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