【发布时间】:2014-03-27 20:56:22
【问题描述】:
我想在项目 pom 中包含一个父级,其中包含分发管理和存储库。正如人们所期望的那样。
当我 mvn 打包子时,maven 无法解析父 pom,这不足为奇。
我可以通过将我的内部 nexus 存储库添加到子 pom.xml 来使其解析父级。但这听起来像是在下蛋——我是在告诉孩子一些它应该从父母那里知道的事情。我必须将此 repo 添加到每个有父级的子 pom 中。
我怎样才能避免这种情况?
【问题讨论】:
我想在项目 pom 中包含一个父级,其中包含分发管理和存储库。正如人们所期望的那样。
当我 mvn 打包子时,maven 无法解析父 pom,这不足为奇。
我可以通过将我的内部 nexus 存储库添加到子 pom.xml 来使其解析父级。但这听起来像是在下蛋——我是在告诉孩子一些它应该从父母那里知道的事情。我必须将此 repo 添加到每个有父级的子 pom 中。
我怎样才能避免这种情况?
【问题讨论】:
正如 khmarbaise 所写,您需要在 settings.xml 的配置文件中定义您的存储库(这看起来有些奇怪,但实际上是唯一可行的方法):
<profiles>
<profile>
<id>repos</id>
<repositories>
<repository>
<id>my-local-repo</id>
<name>Projektserver Snapshots</name>
<url>http://my-server/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<checksumPolicy>fail</checksumPolicy>
<updatePolicy>daily</updatePolicy>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>repos</activeProfile>
</activeProfiles>
根据您的实际配置,您还可以包括镜像设置,并可能调用您的本地 nexus central。
【讨论】:
听起来父级已部署到您的内部 nexus 存储库,因此一旦您添加分发管理和存储库详细信息,它就会从那里获取它。
让它从您的本地副本中获取。首先确保版本匹配。然后导航到父节点并运行 mvn clean install。这会将父 pom 推送到您本地的 maven 存储库。
您也可以通过确保已将 releativePath 元素添加到子 pom 中的父级详细信息来解决此问题,您可能不需要手动构建父级,但我不是 100% 确定并且没有测试过。
【讨论】:
应该在你的 pom 中定义的唯一东西是 distributionManagement 存储库应该在 settings.xml 中定义。
【讨论】: