【问题标题】:Parent pom not resolvable unless I add repo to child pom - conundrum除非我将 repo 添加到子 pom,否则父 pom 无法解析 - 难题
【发布时间】:2014-03-27 20:56:22
【问题描述】:

我想在项目 pom 中包含一个父级,其中包含分发管理和存储库。正如人们所期望的那样。

当我 mvn 打包子时,maven 无法解析父 pom,这不足为奇。

我可以通过将我的内部 nexus 存储库添加到子 pom.xml 来使其解析父级。但这听起来像是在下蛋——我是在告诉孩子一些它应该从父母那里知道的事情。我必须将此 repo 添加到每个有父级的子 pom 中。

我怎样才能避免这种情况?

【问题讨论】:

    标签: maven nexus


    【解决方案1】:

    正如 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

    【讨论】:

    • 最佳答案,谢谢。第一次工作。我之前有这个想法,但无法让它发挥作用。
    【解决方案2】:

    听起来父级已部署到您的内部 nexus 存储库,因此一旦您添加分发管理和存储库详细信息,它就会从那里获取它。

    让它从您的本地副本中获取。首先确保版本匹配。然后导航到父节点并运行 mvn clean install。这会将父 pom 推送到您本地的 maven 存储库。

    您也可以通过确保已将 releativePath 元素添加到子 pom 中的父级详细信息来解决此问题,您可能不需要手动构建父级,但我不是 100% 确定并且没有测试过。

    【讨论】:

      【解决方案3】:

      应该在你的 pom 中定义的唯一东西是 distributionManagement 存储库应该在 settings.xml 中定义。

      【讨论】:

        猜你喜欢
        • 2018-07-23
        • 2021-06-26
        • 2018-10-11
        • 1970-01-01
        • 2012-11-10
        • 1970-01-01
        • 2021-07-12
        • 2023-04-01
        • 2018-04-12
        相关资源
        最近更新 更多