2

在 Hudson(1.368) 上使用 Maven 的发布插件时,我收到一个错误,即我的 distributionManagement 部分在我们的 Nexus Maven 存储库管理器的部署阶段丢失。如果我在不使用发布的情况下部署它就可以了,所以不应该是服务器、部分或设置的错误配置。

值得注意的是,我的公司对 Hudson 使用了不同的 pom 文件,并且对它们进行了不同的命名。还有各个项目目录中的 settings.xml。这从来都不是问题,因为 Hudson 允许指定 pom 的名称以及设置文件的位置和名称。

我注意到上述内容的原因是,当将 distributionManagement 移到常规 pom.xml 中时,它确实找到了它(但仍然无法正常工作,因为它在设置文件中缺少用户名和密码)。这让我很困惑,因为对于发布过程的前面部分,它使用了正确的 pom 和设置。只是后来似乎忘记了他们。这里发生了什么?

先感谢您。

更新
maven 发布插件似乎启动了一个新的 maven 实例,它似乎使用默认的 pom.xml 而不是我们不同命名的 pom。需要更多的测试。

4

2 回答 2

3

答案(对于偶然发现这个问题的任何迷失的灵魂)是 maven 确实分叉了一个没有使用正确 pom 文件和设置的新进程。解决方案是在 pom 文件中添加一个部分,如下所示:

<plugin>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.0</version>
    <configuration>
        <goals>-f POMFILE -s SETTINGSFILE deploy</goals>
    </configuration>
</plugin>

这将这两个文件指定给新的 Maven 进程。

于 2010-08-18T18:56:07.553 回答
0

如果我在不使用发布的情况下部署它就可以了,所以不应该是服务器、部分或设置的错误配置。

嗯,显然某处存在错误配置,无论是在 Hudson 级别。但是如果没有看到 pom、设置、活动配置文件、发布期间使用的配置文件、Hudson 设置等,就很难发现它。

第一步:尝试使用与 Hudson 完全相同的配置在命令行上重现问题。

第二步:使用Maven Help Plugin来理解和调试问题。更具体地说,以下目标:

我注意到上述内容的原因是,当将 distributionManagement 移到常规 pom.xml 中时,它确实找到了它(但仍然无法正常工作,因为它在设置文件中缺少用户名和密码)。

如果在项目之外(在公司环境中,它通常在公司中,是这种情况吗?),不清楚在哪里distributionManagement指定。pom.xmlpom.xml

还不清楚您是否实际上为username与.passwordididdistributionManagement

但不知何故,这里使用了错误的组合。仔细检查在发布/部署期间哪些配置文件/设置处于活动状态,以按照建议发现问题。

也可以看看

  • Maven 部署插件使用页面
于 2010-08-17T17:58:28.713 回答