我需要使用公司本地的Maven存储库,而且只能使用它。现在,Super POM包含repo1.maven.org/maven2 - 我想关闭它。
现在,http://maven.apache.org/guides/introduction/introduction-to-the-pom.html说“除非明确设置,否则所有POM都会扩展超级POM”。
我如何明确地设定它?
(Maven 3.0.4)
答案 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>
我推荐基于离线模式的解决方案。它干净而清晰。