gpt4 book ai didi

Maven部署插件-deployAtEnd不起作用

转载 作者:行者123 更新时间:2023-12-04 15:09:15 29 4
gpt4 key购买 nike

我在带有 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 使部署插件在多模块项目中正常工作?

最佳答案

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

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

本期 Jérôme Joslet 解释:

I issue this problem today and found a workaround.

The maven-deploy-plugin records its state in static variables. One for stacking deploy requests (deployRequests) and another one for counting ready project (readyProjectsCounter). When the problem occurs, there is more than one static variable used to count ready projects. This happens when there is more than one classloader that loads the deploy plugin's classes. This leads to multiple class instances and multiple static variable instances. Some module count on one instance and others modules on another one.

The result is that the deploy plugin never flush its pending deploy requests since no counter is equal to the number of project in the reactor.

As mentionned in the following documentation : https://svn.apache.org/repos/infra/websites/production/maven/content/reference/maven-classloading.html :

For projects that use build extensions, plugin classloaders are wired to project classloaders. This gives plugin code access to both Maven API packages and packages exported by the project build extensions. Maven will create one and only one classloader for each unique plugin+dependencies+build-extensions combination.

and

Maven guarantees there will be one and only one project classloader for each unique set of project build extensions and the same classloader will be used by all projects that have the set of build extensions.

The workaround is to declare all extension plugins, with all their extra <dependencies>, in the parent project. This assures that the same classloader is used for loading plugin in all modules.

关于Maven部署插件-deployAtEnd不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36328154/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com