【发布时间】:2019-10-11 11:56:26
【问题描述】:
我有两个 maven 插件,A 和 B,其中 A 定义在 before B 。
在A的执行中我想在B执行之前改变B的某个配置,两个插件配置在同一个阶段(编译)。
在插件A的代码中,我得到了我要更改配置的插件:
List<Plugin> plugins = project.getBuildPlugins().stream()
.filter(plugin -> plugin.getKey().equals("cz.habarta.typescript-generator:typescript-generator-maven-plugin"))
.collect(Collectors.toList());
Plugin plugin = plugins.get(0);
其中 project 是 MavenProject 实例。
for (PluginExecution t: plugin.getExecutions ()) {
if (t.getPhase (). equals ("compile")) {
Xpp3Dom config = (Xpp3Dom) t.getConfiguration ();
t.setConfiguration (changeConfig (config));
} else {
System.out.println ("Not compile phase");
}
}
changeConfig()方法改变当前配置并返回一个新配置。
配置被改变了,但是这个改变并没有被插件B的执行所接受。
任何服从?
更新:
流程如下,插件A扫描项目依赖,对于每一个满足一系列条件的依赖,都必须在插件B中添加如下block > 配置:
<moduleDependency>
<importFrom> value1 </importFrom>
<importAs> value2 </importAs>
<infoJson> value3 </infoJson>
<npmPackageName> value4 </npmVersionRange>
</moduleDependency>
n 个块被添加到插件 B 的以下配置元素中:
<moduleDependencies>
...
</moduleDependencies>
Information about the configuration element of plugin B
问题是插件B没有采用新配置。
任何服从?
【问题讨论】:
标签: java maven plugins runtime maven-plugin