Maven插件开发的一些问题总结

之前在开发一个Maven插件(生成接口文档)的开发中,遇到Maven插件开发相关的问题,所以在这整理一下,希望能帮到遇到同样问题的你们。
我开发的插件说明文档:查看地址

1 创建maven plugin项目:

推荐一个图文教程:https://blog.csdn.net/u012620150/article/details/78652624
官网指导教程:http://maven.apache.org/guides/plugin/guide-java-plugin-development.html

2 开发相关

2.1 注入MavenProject,使用运行pom中的信息

2.1.1 依赖pom引入:

 
      org.apache.maven
      maven-project
      2.0.6
    

2.1.2 在你的XxxxMojo声明属性

/**
     * @parameter default-value="${project}"
     * @required
     * @readonly
     */
    private MavenProject project;

2.1.3 MavenProject就可以获取使用该插件的pom的所有信息了。
可以在idea或其他编辑器中,右键你的pom.xml > maven > Show Effective POM。在生成的文件中查找你想要的属性。MavenProject中的层级结构和pom.xml中的基本一致。
举几个例子吧:

  • mavenProject.getGroupId() : 获取pom的属性
  • mavenProject.getArtifactId() : 获取pom的属性
  • mavenProject.getVersion() : 获取pom的属性

2.2 注入MavenSession,读取pom->dependences中dependence的pom信息

2.2.1 依赖pom引入:

 
      org.apache.maven
      maven-core
      3.0
    

2.2.2 在你的XxxxMojo声明属性
注入MavenSession:

 /**
     * @parameter default-value="${session}"
     * @required
     * @readonly
     */
    private MavenSession session;

注入ProjectBuilder:

 /**
     * @component
     */
    private ProjectBuilder projectBuilder;

网上百度到的是使用@Component注解注入的,我没生效,试了下javadoc注解的方式,竟然成功了。
2.2.3 实现代码
获取pom文件中下的的对应的MavenProject对象。

ProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest(session.getProjectBuildingRequest());
# 遍历依赖jar,获取对应的MavenProject对象
for (Artifact dependencyArtifact : (Set)project.getDependencyArtifacts()) {
    buildingRequest.setProject(null);
    MavenProject dependencyProject = projectBuilder.build(artifact, buildingRequest).getProject();               
 }

project就是2.1中执行该插件的pom对应的MavenProject

3. 之后还会在研究一些maven plugin开发相关的东西,之后再补充

参考链接

  • 官网插件开发指导文档:http://maven.apache.org/plugin-developers/index.html
  • 从Artifact获取MavenProject:https://codingdict.com/questions/125404

你可能感兴趣的:(Maven插件开发的一些问题总结)