installAtEnd 和 deployAtEnd 在构建结束时不执行
installAtEnd and deployAtEnd are Not Executed at End of Build
我有一个结构如下的多模块项目:
- 构建
- 模块
- module.bom
- rcp.build
- module.rcp
两者都构建了以前分开并工作过的项目。现在我把它们放在一起 installAtEnd
和 deployAtEnd
不起作用。我是这样添加的:
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
<configuration>
<installAtEnd>true</installAtEnd>
</configuration>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<configuration>
<deployAtEnd>true</deployAtEnd>
</configuration>
</plugin>
以上插件我没有配置。每当我 运行 构建时,我都会得到以下日志:
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ module.rcp ---
[INFO] Installing group:module.rcp:0.1.6-SNAPSHOT at end
[INFO]
[INFO] --- maven-deploy-plugin:2.8.2:deploy (default-deploy) @ module.rcp ---
[INFO] Deploying group:module.rcp:0.1.6-SNAPSHOT at end
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] modules ............................................. SUCCESS [ 3.339 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:05 min
[INFO] Finished at: 2019-01-18T12:54:18+01:00
[INFO] ------------------------------------------------------------------------
Maven 忘记安装/部署。
我找到了 this bug and this question,这表明它可能是第谷造成的。所以我将 Tycho 插件添加到父 pom.xml 中,但什么也没做。然后我完全删除了 RCP 模块。还是一样的问题。
现在 BOM 仍然有一个不是 Maven 项目的父项 "build",删除它/更改父项可以使构建正确安装和部署。但是,由于它是 BOM,我不能使用 "build" 父项。
有没有其他方法可以让 installAtEnd
和 deployAtEnd
在我的项目结构中工作?
作为khmarbaise pointed out, the following Maven extension can be used: https://github.com/khmarbaise/maven-deployer-extension
请注意,此方法不适用于 Jenkins,因为它不适用于 support Maven core extensions。 (我会说 "yet",但 JENKINS-30058 是一个有 4 年历史的阻止程序错误,所以我想它不会很快被修复。)如果构建也应该在 Jenkins 上运行,那么似乎除了禁用 deployAtEnd
和 installAtEnd
或从模块中删除第二个父 POM 之外别无选择。
今天,我发现了另一个在维护旧项目时无法部署构建的原因。有这样的事情:
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
</plugin>
删除 <extensions>
使项目再次部署。
我有一个结构如下的多模块项目:
- 构建
- 模块
- module.bom
- rcp.build
- module.rcp
两者都构建了以前分开并工作过的项目。现在我把它们放在一起 installAtEnd
和 deployAtEnd
不起作用。我是这样添加的:
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
<configuration>
<installAtEnd>true</installAtEnd>
</configuration>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<configuration>
<deployAtEnd>true</deployAtEnd>
</configuration>
</plugin>
以上插件我没有配置。每当我 运行 构建时,我都会得到以下日志:
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ module.rcp ---
[INFO] Installing group:module.rcp:0.1.6-SNAPSHOT at end
[INFO]
[INFO] --- maven-deploy-plugin:2.8.2:deploy (default-deploy) @ module.rcp ---
[INFO] Deploying group:module.rcp:0.1.6-SNAPSHOT at end
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] modules ............................................. SUCCESS [ 3.339 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:05 min
[INFO] Finished at: 2019-01-18T12:54:18+01:00
[INFO] ------------------------------------------------------------------------
Maven 忘记安装/部署。
我找到了 this bug and this question,这表明它可能是第谷造成的。所以我将 Tycho 插件添加到父 pom.xml 中,但什么也没做。然后我完全删除了 RCP 模块。还是一样的问题。
现在 BOM 仍然有一个不是 Maven 项目的父项 "build",删除它/更改父项可以使构建正确安装和部署。但是,由于它是 BOM,我不能使用 "build" 父项。
有没有其他方法可以让 installAtEnd
和 deployAtEnd
在我的项目结构中工作?
作为khmarbaise pointed out, the following Maven extension can be used: https://github.com/khmarbaise/maven-deployer-extension
请注意,此方法不适用于 Jenkins,因为它不适用于 support Maven core extensions。 (我会说 "yet",但 JENKINS-30058 是一个有 4 年历史的阻止程序错误,所以我想它不会很快被修复。)如果构建也应该在 Jenkins 上运行,那么似乎除了禁用 deployAtEnd
和 installAtEnd
或从模块中删除第二个父 POM 之外别无选择。
今天,我发现了另一个在维护旧项目时无法部署构建的原因。有这样的事情:
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
</plugin>
删除 <extensions>
使项目再次部署。