dc9*_*c95 2 java mojo maven-plugin maven
我正在开发一个带有多个 Mojo 的 Maven 插件。在其中之一中,我的目标是将额外的工件附加到我的项目中。类似于maven-build-helper-plugin 的 Attach-artifact。但我不想使用任何给定的构建插件,我想通过我的 Mojo 来完成。
我知道我必须使用MavenProjectHelper.attachArtifact。因为 MavenProject.attachArtifact 已被弃用。
我现在拥有的是这个(在 mojo.java 中):
@Parameter(defaultValue = "${project}", required = true, readonly = true)
private MavenProject project;
@Parameter(defaultValue = "${helper}", required = true, readonly = true)
protected MavenProjectHelper projectHelper;
Run Code Online (Sandbox Code Playgroud)
并在execute方法中:
projectHelper.attachArtifact(project, "plugin", file);
Run Code Online (Sandbox Code Playgroud)
但问题是,MavenProjectHelper的默认值不是${helper}。这就是为什么我收到以下错误:
Failed to execute goal com.company.product.repo:my-plugin:1.0.1:attach-artifact (default) on project consumer-plugin: The parameters 'projectHelper' for goal com.company.product.repo:my-plugin:1.0.1:attach-artifact are missing or invalid -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginParameterException
Run Code Online (Sandbox Code Playgroud)
我如何给它正确的值?就像MavenSessions一样${session},我假设它MavenProjectHelper有一个默认值。如果是的话,那是什么?如果不是,那么我如何为MavenProjectHelper参数提供正确的值?
这MavenProjectHelper是一个 Plexus 组件,而不是插件参数,应该通过使用注释来注入@org.apache.maven.plugins.annotations.Component:
用于配置 Plexus 组件的注入
MavenPluginManager.getConfiguredMojo(...)。
因此,你应该:
@Component
private MavenProjectHelper projectHelper;
Run Code Online (Sandbox Code Playgroud)
这个注释,就像 一样@Parameter,附带用于注释的插件工具,您可以在 Maven 插件的 POM 中声明它
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>3.5</version>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
为了进一步澄清,您可以注入的内容@Parameter记录在类的 Javadoc 中PluginParameterExpressionEvaluator(其中session包括 Maven 会话、project当前 Maven 项目或mojoExecution当前 Mojo 执行)。
| 归档时间: |
|
| 查看次数: |
822 次 |
| 最近记录: |