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 。这确保使用相同的类加载器来加载所有模块中的插件。
今天我在项目中解决了同样的问题。
问题模块有扩展名(<extension>标签)。它们违反了 maven-deploy-plugin 中内置模块的计数器。
为了解决这个问题,我移至<extension>根 POM。
| 归档时间: |
|
| 查看次数: |
2593 次 |
| 最近记录: |