zoukankan      html  css  js  c++  java
  • 开发一个简单的maven plugin

    maven plugin 的开发还是比较清晰以及简单的,因为maven 提供了自己的ioc 以及开发约定,同时社区也有比较多的扩展
    我们都是可以参考学习的,官方也还算清晰

    简单说明

    如果需要开发maven 插件我们需要做的就是开发自己的mojo,同时配置一些参数注解,因为很多时候我们需要依赖外部服务(maven core)
    所以需要基于maven mojo 的ioc 模型注入依赖的服务(project。。。)

    一个参考资料

    • 项目结构

    • maven 插件约定
      命名推荐的格式: <name>-maven-plugin,
      packaging: maven-plugin
    • 基本依赖
      因为开发需要依赖maven plugin api 的注解以及maven-plugin-api 所以一般都需要依赖添加这几个依赖,同时
     
    <dependencies>
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-plugin-api</artifactId>
            <version>3.0</version>
        </dependency>
        <!-- dependencies to annotations -->
        <dependency>
            <groupId>org.apache.maven.plugin-tools</groupId>
            <artifactId>maven-plugin-annotations</artifactId>
            <version>3.4</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    • mojo 简单代码
      实现AbstractMojo ,同时添加Mojo 注解,name 就是我们呢的goal
     
    package com.dalong.plugin;
    import org.apache.maven.plugin.AbstractMojo;
    import org.apache.maven.plugin.MojoExecutionException;
    import org.apache.maven.plugin.MojoFailureException;
    import org.apache.maven.plugin.logging.Log;
    import org.apache.maven.plugins.annotations.Mojo;
    import org.apache.maven.plugins.annotations.Parameter;
    /*
        @author dalongrong
     */
    @Mojo(name = "dalong")
    public class MyPlugin extends AbstractMojo{
        @Parameter(property = "username",defaultValue = "dalong")
        private String username;
        Log log;
        public  MyPlugin(){
            this.log=getLog();
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public void execute() throws MojoExecutionException, MojoFailureException {
            log.debug("print username");
            log.debug(this.username);
        }
    }
    • 插件使用
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <parent>
            <artifactId>mymaven-plugin</artifactId>
            <groupId>com.dalong</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
        <artifactId>call-plugin</artifactId>
        <build>
            <plugins>
                <plugin>
                    <groupId>com.dalong</groupId>
                    <artifactId>pluginapp-maven-plugin</artifactId>
                    <version>1.0-SNAPSHOT</version>
                    <executions>
                        <execution>
                            <phase>compile</phase>
                            <goals>
                                <goal>dalong</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <username>dalongdemo appp  test</username>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
     
    • 运行效果

    说明

    以上是一个特别简单的maven plugin 开发说明,实际我们需要依赖maven core 的一些api 进行扩展,同时会在不同的生命周期做不同的
    处理

    参考资料

    http://maven.apache.org/plugin-developers/
    http://maven.apache.org/guides/mini/guide-configuring-plugins.html
    http://maven.apache.org/guides/plugin/guide-java-plugin-development.html
    http://maven.apache.org/examples/maven-3-lifecycle-extensions.html

  • 相关阅读:
    新书推荐——《How We Test Software at Microsoft》
    [ZZ]采访与书摘:使用C#进行基于模型的软件测试和分析
    Adding Different Types of Data Sources to a Web Test
    [ZZ]为什么传统的自动化测试工具会扼杀敏捷?
    很久没有这么High了
    留图以纪念这次地震
    white——Automate windows applications
    WatiN、Wax、WatiN Test Recorder开源自动化测试框架
    绝版的T61普屏
    有感于公司搬家
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/13873370.html
Copyright © 2011-2022 走看看