如何在Mojo.execute()中获取$ {basedir}值(或其他属性)?

And*_*rea 3 mojo maven-plugin maven

我想要获得${basedir}Mojo中的价值.我以为我可以看到这是一个正常的系统属性但是

System.getProperty("basedir") 
Run Code Online (Sandbox Code Playgroud)

回报null.

public void execute() throws MojoExecutionException, MojoFailureException {
    String baseDir = ???
}
Run Code Online (Sandbox Code Playgroud)

Tun*_*aki 6

这是通过注入MavenProject和调用getBaseDir()方法来完成的,如下所示:

public class MyMojo extends AbstractMojo {

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

    public void execute() throws MojoExecutionException, MojoFailureException {
        String baseDir = project.getBaseDir();
    }

}
Run Code Online (Sandbox Code Playgroud)

@Parameter用于注入的价值${project},它解决了在当前项目从Maven的会议正在兴建.

使用注释需要以下对Maven插件的依赖:

<dependency>
  <groupId>org.apache.maven.plugin-tools</groupId>
  <artifactId>maven-plugin-annotations</artifactId>
  <version>3.5</version>
  <scope>provided</scope> <!-- annotations are needed only to build the plugin -->
</dependency>
Run Code Online (Sandbox Code Playgroud)