自定义maven插件

新建maven项目

选择 org.apache.maven.archetypes:maven-archetype-mojo 为骨架创建项目

@Mojo(name = "XXX",defaultPhase =  LifecyclePhase.PROCESS_RESOURCES,requiresDependencyResolution= ResolutionScope.COMPILE)
public class SwaggerPlug extends AbstractMojo {
@Parameter(defaultValue = "${project}", readonly = true, required = true)

public MavenProject project;
@Parameter(property = "envType")
public String envType;
public void execute() throws MojoExecutionException, MojoFailureException{
try{
ClassLoader projectLoader = getNewClassLoad(this.project);
Class clz = projectLoader.loadClass(pkgName + "." + className);
if(clz.isAnnotationPresent(org.springframework.web.bind.annotation.RestController.class){
//do someThing

}
catch (Exception e){
e.printStackTrace();
logger.error("生成失败:{}",e);
}
}

public ClassLoader getNewClassLoad(MavenProject project) throws DependencyResolutionRequiredException, MalformedURLException {
List<String> cls = project.getCompileClasspathElements();
cls.add( project.getBuild().getOutputDirectory());
cls.add( project.getBuild().getTestOutputDirectory());
URL[] runtimeUrls = new URL[cls.size()];
for(int i=0;i<cls.size();i++){
runtimeUrls[i] = new File(cls.get(i)).toURI().toURL();
}
URLClassLoader newLoader = new URLClassLoader(runtimeUrls,Thread.currentThread().getContextClassLoader());
return newLoader;
}

}

调试:插件新增remote:设置监听端口
调用插件项目设置 Maven confige - runner:-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8081
paramters:command line:groupId:artifactId:version:name
 
命令行调用插件:
mvn groupId:artifactId:version:name -Dbranch="1.2.5" -DenvType="test" -DappName=""
 
 
原文地址:https://www.cnblogs.com/chexiedaping/p/14283183.html