美文网首页
Maven 开发自定义插件

Maven 开发自定义插件

作者: Tinyspot | 来源:发表于2024-05-24 22:49 被阅读0次

    1. Maven 插件

    官方插件命名格式:maven-<xxx>-plugin
    非官方插件命名格式:<xxx>-maven-plugin

    2. 插件开发

    2.1 创建项目

    插件本身也是Maven项目

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

    pom.xml 分析
    打包方式设置为 maven-plugin

    <groupId>org.example</groupId>
    <artifactId>demo-maven-plugin</artifactId>
    <version>1.0-SNAPSHOT</version>
    
    <packaging>maven-plugin</packaging>
    

    Maven 插件依赖的核心包 maven-plugin-api

    <dependencies>
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-plugin-api</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.maven.plugin-tools</groupId>
            <artifactId>maven-plugin-annotations</artifactId>
            <version>3.5.2</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    

    MyMojo.java 文件

    /**
     * Goal which touches a timestamp file.
     *
     * @goal 指定插件的命名,同注解 @Mojo
     * @phase 绑定插件执行的生成周期
     */
    @Mojo(name = "myMojo")
    public class MyMojo extends AbstractMojo {
    
        @Parameter(name = "name", defaultValue = "xing")
        private String name;
    
        /**
         * 插件入口类
         */
        public void execute() throws MojoExecutionException {
            getLog().info("Hello " + name);
        }
    }
    

    需要继承抽象类 AbstractMojo.java

    2.2 插件打包

    Install 上传到本地 maven 仓库

    3. 使用自定义插件

    3.1 在项目中添加插件

    <build>
        <plugins>
            <plugin>
                <groupId>org.example</groupId>
                <artifactId>demo-maven-plugin</artifactId>
                <version>1.0-SNAPSHOT</version>
            </plugin>
        </plugins>
    </build>
    

    双击 dmeo:myMojo 控制台会输出:

    可配置 Parameter 参数

    <plugin>
        <groupId>org.example</groupId>
        <artifactId>demo-maven-plugin</artifactId>
        <version>1.0-SNAPSHOT</version>
        <configuration>
            <name>World</name>
        </configuration>
    </plugin>
    

    此时控制台打印 [INFO] Hello World

    3.2 附到生命周期

    在构建生命周期的 package 阶段,目标 myMojo自动执行

    <plugin>
        <groupId>org.example</groupId>
        <artifactId>demo-maven-plugin</artifactId>
        <version>1.0-SNAPSHOT</version>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>myMojo</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <name>World</name>
        </configuration>
    </plugin>
    

    相关文章

      网友评论

          本文标题:Maven 开发自定义插件

          本文链接:https://www.haomeiwen.com/subject/fixfqjtx.html