我想在项目pom中包含父项,其中包含分发管理和存储库。正如人们所期望的那样。
当我给孩子打包时,maven无法解决父母pom,不出所料。
我可以通过将内部nexus存储库添加到子pom来解决父级问题。但这听起来像鸡蛋放鸡 - 我告诉孩子它应该从父母那里知道。我必须将这个回购添加到每个有父母的孩子pom。
我该如何避免这种情况?
答案 0 :(得分:3)
正如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>
根据您的实际配置,您还会包含镜像设置,并可能会调用您当地的关联central
。
答案 1 :(得分:0)
听起来已将父级部署到您的内部nexus存储库,因此一旦您添加了分发管理和存储库详细信息,它就会从那里获取它。
使其从本地副本中提取。首先确保版本匹配。然后导航到父级并运行mvn clean install。这会将父pom推送到您当地的maven仓库。
您也可以通过确保将releativePath元素添加到子pom中的父详细信息来解决此问题,您可能不需要手动构建父级,但我不是100%肯定并且没有测试过。
答案 2 :(得分:0)
应该在pom中定义的唯一内容是distributionManagement,应该在settings.xml中定义存储库。