将价值从 Mojo 传递到 pom
Posted
技术标签:
【中文标题】将价值从 Mojo 传递到 pom【英文标题】:Passing value from Mojo to pom 【发布时间】:2020-02-07 10:07:52 【问题描述】:我正在开发一个 maven 插件,我有一个名为“FinalVersion”的参数,它在 Mojo 中创建为 @Parameter,并且它的值在 Mojo 类中设置。 我需要将“最终版本”传递给我的 pom 文件并将其用作其他插件配置中的元素。像这样:
@Mojo(name = "validate", defaultPhase = LifecyclePhase.COMPILE)
public class VersionValidatorMojo extends AbstractMojo
.
.
@Parameter(property = "finalVersion")
private String finalVersion ;
我想在我的 pom.xml 中有这样的东西
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>custom-maven-release-plugin</artifactId>
<configuration>
<goals>release</goals>
<version>finalversion</version>
</configuration>
</plugin>
另外,在我的场景中,我有开发人员设置的项目版本,而不是从 SCM 获取,我可以使用哪个插件?
最佳
【问题讨论】:
在另一个插件中使用一个插件的配置通常是个坏主意...这会将插件耦合在一起...问题是:您要解决什么样的问题?我也想看看maven.apache.org/maven-ci-friendly.html 感谢@khmarbaise,我有一个项目设置,我没有从 CI 获取版本。事实上,我手动给出了版本,然后它被计算并作为最终版本输出,应该在再次pom。 【参考方案1】:你的 POM 应该使用 finalVersion
标签
<configuration>
<finalversion>X.Y</finalversion>
</configuration>
这是另一个完整的示例,带有一个名为位置的参数
<plugin>
<groupId>mygroup</groupId>
<artifactId>myapp</artifactId>
<version>$project.version</version>
<configuration>
<locations>
<param>$basedir/src/main/resources/db/toBeIncluded</param>
<param>$basedir/src/main/resources/db/migration/upgrade</param>
</locations>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>validate</goal>
</goals>
</execution>
</executions>
</plugin>
在我的 Mojo 实现中,我已经定义了
@Parameter
private String[] locations;
【讨论】:
谢谢,但我不需要更改我的 pom 中的“最终版本”,我只需要将它用作另一个插件的输入。事实上,我只在我的 mojo 中设置了最终版本,它是只读的。有什么建议吗? 这就是我的建议,我根据您的代码提供了一个示例。在我的项目中,例如以上是关于将价值从 Mojo 传递到 pom的主要内容,如果未能解决你的问题,请参考以下文章
Javascript:通过将路径作为字符串传递给对象来从对象中获取深层价值[重复]
Javascript:通过将路径作为字符串传递给对象来从对象中获取深层价值[重复]
Java Maven MOJO - 从项目 POM 中获取信息