我编写了一个 Maven 插件,并将其作为目标合并到另一个项目的打包阶段,并在该项目的 pom.xml 中给出了配置。但是,使用 @parameter 表示法设置的所有字段都不会被填充,因此它们只会在使用时抛出 NullPointerExceptions。
我的魔力:
/**
* @goal wrap
* @phase package
*/
public class MyMojo extends AbstractMojo {
/**
* @parameter expression="${project.build.directory}"
*/
private String outputDirectory;
/**
* @parameter
*/
private String dbDataName;
private File dbFile;
public MyMojo(){
dbFile = new File(outputDirectory, dbDataName) // throws nullpointerexception
}
public void execute() throws MojoExecutionException{
// Do stuff
}
}
一些魔力 pom:
<groupId>com.mycompany.wrapper</groupId>
<artifactId>something-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>maven-plugin</packaging>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>3.2</version>
<configuration>
<skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
</configuration>
<executions>
<execution>
<id>mojo-descriptor</id>
<goals>
<goal>descriptor</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
我的项目 pom 的相关位:
<plugin>
<groupId>com.mycompany.wrapper</groupId>
<artifactId>something-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>wrap</goal>
</goals>
<configuration>
<dbDataName>dcbTestData.sql</dbDataName>
</configuration>
</execution>
</executions>
</plugin>
谁能看到我在这里做错了什么?很可能这是我没有看到的一些愚蠢的错误。