自定义maven插件
- 通过模板建立maven插件工程项目
mvn archetype:create
-DgroupId=com.alibaba.maven.plugins
-DartifactId=greeting-maven-plugin
-DarchetypeGroupId=org.apache.maven.archetypes
-DarchetypeArtifactId=maven-archetype-mojo
- groupId=com.alibaba.maven.plugins 和 artifactId=greeting-maven-plugin 来定位插件位置
- archetypeGroupId=org.apache.maven.archetypes 和 archetypeArtifactId=maven-archetype-mojo 用来定位使用哪个maven的工程模板来建立项目
- 复写execute方法(所有的mojo都应该继承自org.apache.maven.plugin.AbstractMojo)
/** @author wz
* @goal sayHello
*/
public class HelloWorldMojo extends AbstractMojo{
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
getLog().info("Hello World!");
} }
- 运行命令mvn install 把该插件先发布到本地库
- 运行插件
mvn com.alibaba.maven.plugins:greeting-maven-plugin:1.0-SNAPSHOT:sayHello
# 输出 “Hello World”
- pom.xml中使用插件
<build>
<plugins>
<plugin>
<groupId>com.alibaba.maven.plugins</groupId>
<artifactId>greeting-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>sayHello</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
- 支持运行时输入参数
/**
* @author wz
* @goal sayHello
*/
public class HelloWorldMojo extends AbstractMojo{
/**
* @parameter default-value="WZ" expression="${username}
*/
private String userName;
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
getLog().info("Hello World!"+userName);
} }
- 带参数的pom配置
<build>
<plugins>
<plugin>
<groupId>com.alibaba.maven.plugins</groupId>
<artifactId>greeting-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<configuration>
<userName>wz</userName>
</configuration>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>sayHello</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>