我需要使用公司本地Maven存储库,并且仅限于此。现在,超级POM包含repo1.maven.org/maven2 - 我想将其关闭。Maven - 如何设置超级POM
现在,http://maven.apache.org/guides/introduction/introduction-to-the-pom.html表示“除非明确设置,否则所有POM都会扩展超级POM”。
我该如何明确设置它?
(Maven的3.0.4)
我需要使用公司本地Maven存储库,并且仅限于此。现在,超级POM包含repo1.maven.org/maven2 - 我想将其关闭。Maven - 如何设置超级POM
现在,http://maven.apache.org/guides/introduction/introduction-to-the-pom.html表示“除非明确设置,否则所有POM都会扩展超级POM”。
我该如何明确设置它?
(Maven的3.0.4)
我假设,通过“本地资源库”你的意思是库中找到你的公司/办事处,而不是本地资源库在$ HOME/.m2目录/存储库。
定义你的仓库在用户的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>
这样,每一个项目都会从超级POM但Maven的继承将无法连接到repo1.maven .ORG
我的理解是,超级POM提供了广泛使用的功能,所有的Maven的POM,除非该功能是明确项目POM提供(例如有点像Java中的Object类)。因此,为避免使用公共存储库,您可以指定要在您的POM中使用的(本地)存储库。但是,更好的方法是在settings.xml文件中指定本地存储库 - 这样可以使用密码保护本地存储库,而无需将用户名/密码提交到源代码存储库并手动分享。
你在找什么是Maven的离线模式。使用控制台调用Maven时,可以通过-o
或--offline
选项启用它。如果您真的想要始终启用它,请将<offline>true</offline>
添加到您的settings.xml
。
如果您不能(由于某种原因)使用脱机模式,最极端的选择是覆盖central
id的存储库定义。示例:
<repository>
<id>central</id>
<url>file://C:\tmprepo</url>
</repository>
我建议使用基于离线模式的解决方案。它干净清晰。
对不起,我的表述误导了你。正如托马斯正确地假设的那样,我打算谈论公司本地存储库。所以离线模式不适合我。 – Falko 2012-04-17 13:23:08
有趣的是,这回答了我的问题,如果不是我的问题。 (我还是不知道如何设置一个超级POM,但我不需要了:) – Falko 2012-04-17 17:34:31
SuperPOM是Maven的罐子里面的地方,你需要重新找出给定的罐子,修改POM和jar文件。但在我看来,它根本没有意义...... – 2012-04-17 17:38:18
这是上述文件的“除非明确设置”,这使我相信设置它是一种方式。我停止了。 – Falko 2012-04-17 18:41:49