maven 插件 - 在 Mojo 中获取插件的 artifactId

maven plugin - get artifactId of plugin in Mojo

是否可以获取当前Mojo的artifactId?

@Mojo(...)
public class MyMojo extends AbstractMojo {
    @Parameter(property = "project")
    private MavenProject project;
    @Parameter(property = "inputDirectory", defaultValue = "${project.basedir}/src/main/${artifact id of the plugin}")
    private File inputDirectory;

   ...

我可以对插件的工件 ID 进行硬编码,但我宁愿动态获取它。

顺便说一句,我想到的是您使用的是旧式注入

@Parameter(property = "project")
private MavenProject project;

@Parameter(property = "inputDirectory", defaultValue = "${project.basedir}/src/main/${artifact id of the plugin}")
private File inputDirectory;

They should look like this:

此处记录了 defaultValue 的表达式值: http://maven.apache.org/ref/3.1.1/maven-core/apidocs/org/apache/maven/plugin/PluginParameterExpressionEvaluator.html 取决于您使用的 Maven 版本。

@Parameter(defaultValue = "${project}, required = true, readonly = true)
private MavenProject project;

@Parameter(defaultValue = "${project.basedir}/src/main/${artifact id of the plugin}", property = "inputDirectory", required = true)
private File inputDirectory;

接受的答案没有回答问题。

你可以使用一个字段来动态获取mojo的artifactId(而不是插件所附加的项目的artifactId)

@Parameter(defaultValue = "${mojo.artifactId}")
private String mojoArtifactId;

或者您的情况:

@Parameter(property = "project")
private MavenProject project;

@Parameter(property = "inputDirectory", defaultValue = "${project.basedir}/src/main/${mojo.artifactId}")
private File inputDirectory;