Maven部署插件 - deployAtEnd无法正常工作

Ark*_*ski 6 maven maven-deploy-plugin

我在deployAtEnd属性设置为的多模块项目中使用maven-deploy-plugin true.

执行后mvn deploy在根项目,部署插件是每个子项目执行的-我可以看到这样的: [INFO] --- maven-deploy-plugin:2.8.2:deploy (default-deploy) @ subproject-name --- [INFO] Deploying package:subproject-name:v1.1 at end 最后的调用是根项目: [INFO] --- maven-deploy-plugin:2.8.2:deploy (default-deploy) @ parent-project --- [INFO] Deploying package:parent-project:v1.1 at end ,这一切,不执行实际的部署.

如何在多模块项目中使部署插件正常工作deployAtEnd=true

小智 5

今天刚遇到这个问题,我在 maven-deploy-plugin 中发现了相关问题:

https://issues.apache.org/jira/plugins/servlet/mobile#issue/MDEPLOY-193

本期 Jérôme Joslet 的解释:

我今天发布了这个问题并找到了解决方法。

maven-deploy-plugin 在静态变量中记录其状态。一个用于堆叠部署请求 ( deployRequests),另一个用于计算就绪项目 ( readyProjectsCounter)。出现问题时,用于统计就绪项目的静态变量不止一个。当有多个类加载器加载部署插件的类时,就会发生这种情况。这导致多个类实例和多个静态变量实例。一些模块依赖于一个实例,而另一些模块依赖于另一个实例。

结果是部署插件永远不会刷新其挂起的部署请求,因为没有计数器等于反应器中的项目数。

如以下文档中所述:https : //svn.apache.org/repos/infra/websites/production/maven/content/reference/maven-classloading.html :

对于使用构建扩展的项目,插件类加载器连接到项目类加载器。这使插件代码可以访问 Maven API 包和项目构建扩展导出的包。Maven 将为每个独特的插件+依赖项+构建-扩展组合创建一个且仅一个类加载器。

Maven 保证每个唯一的项目构建扩展集只有一个项目类加载器,并且所有具有构建扩展集的项目都将使用相同的类加载器。

解决方法是<dependencies>在父项目中声明所有扩展插件及其所有 extra 。这确保使用相同的类加载器来加载所有模块中的插件。


Ale*_* Ya 3

今天我在项目中解决了同样的问题。

问题模块有扩展名(<extension>标签)。它们违反了 maven-deploy-plugin 中内置模块的计数器。

为了解决这个问题,我移至<extension>根 POM。