我正在尝试使用<distributionManagement>
标记配置Maven 3.0.4 POM中的deploy
步骤。从XSD for POMs (line 1389)开始,它表明仅提供id
应该允许Maven查找settings.xml
文件中的相应值。我列出了所需的服务器(配置正确,因为我可以从-X
中的[DEBUG] Repositories (dependencies): [archiva.snapshots (http://snap-mvnrepo.initech.com/archiva/repository/snapshots, releases+snapshots)]
调试模式settings.xml
中运行时,可以从中获取依赖关系并查看它。但是,当我只在我的POM中提供<id>
并尝试deploy
时,我收到一个错误,即Maven缺少存储库的URL,但是当我明确提供<url>
时deploy
有效。
有没有人知道我应该怎样做才能让它只通过id工作?我不想对URL进行硬编码。
免责声明:错别字可能是匿名化的结果,但它们可能是“真实的”,所以请随意指出。
关于XSD for POMs (line 1389)中<id>
的{{1}}子标记:
存储库的唯一标识符。例如,这用于将存储库与
<repository>
文件中的配置进行匹配。
来自我的settings.xml
:
settings.xml
来自我(失败)<profile>
<id>archiva_dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>archiva.snapshots</id>
<name>Initech Internal Snapshot Repository</name>
<url>http://snap-mvnrepo.initech.com/archiva/repository/snapshots</url>
</repository>
</repositories>
</profile>
:
pom.xml
错误:
<distributionManagement>
<repository>
<id>archiva.snapshots</id>
<!--
<name>Initech Internal Snapshot Repository</name>
<url>http://snap-mvnrepo.initech.com/archiva/repository/snapshots</url>
-->
</repository>
</distributionManagement>
答案 0 :(得分:3)
/project/distributionManagement/id
值定义要匹配的/settings/servers/server/id
,以便识别连接到/project/distributionManagement/url
指定的网址时要使用的凭据
由于部署的URL通常与用于读取访问的URL不同,并且相同的凭据可能适用于多个网址,因此不会查找/project/repositories/repository
或/project/pluginRepositories/pluginRepository
。
因此,简短的回答是您必须指定/project/distributionManagement/url
才能部署,如果您需要凭据才能部署到该URL,则需要指定/project/distributionManagement/id
并确保您的settings.xml
我们如何更新文档以使上述内容更清晰,并防止未来用户以您的方式感到困惑?
模型工具链只用一些句子生成XSL,所以
存储库的唯一标识符。例如,这用于将存储库与settings.xml文件中的配置进行匹配。
实际上是
存储库的唯一标识符。这用于匹配存储库 例如,在
settings.xml
文件中进行配置。 此外,在POM继承和配置文件期间使用标识符 注入以检测应合并的存储库。
最后,为了充分理解句子,您需要注意settings.xml
文件只是从命令行调用Maven时的设置源。 Maven Embedder实际上可能意味着提供给Maven的设置完全来自其他一些来源(例如,从Eclipse或其他IDE的配置数据库中考虑),这是MRELEASE-577中一些乐趣的原因。
阅读第一句话的更好方法可能是
存储库的唯一标识符。这用于将存储库与配置匹配,例如在
settings.xml
文件中。
但如果你能提出更好的建议,我会相应地更新文档