Maven插件介绍二

Maven插件介绍二

Maven常用插件

Maven – Available Plugins 了解更多maven插件。。

maven-compiler-plugin

编译插件,主要参数为:

Source: 源文件JDK版本

Target:目标类文件JDK版本

Encoding: 编译字符, 默认是${project.build.sourceEncoding}

<plugin>

    <groupId>org.apache.maven.plugins</groupId>

    <artifactId>maven-compiler-plugin</artifactId>

    <configuration>

        <source>1.8</source>

        <target>1.8</target>

        <encoding>${project.build.sourceEncoding}</encoding>

        <compilerArgs>

            <compilerArg>-parameters</compilerArg>

        </compilerArgs>

    </configuration>

</plugin>

maven-assembly-plugin

工具插件, 用于将项目打包为一个可对外分发的文件, 如zip等压缩文件。 通常用于持续集成和持续部署中在项目package成jar后再和其他运行文件, 如执行脚本等一起打包分发到服务器中进行自动化部署。

<plugin>

    <groupId>org.apache.maven.plugins</groupId>

    <artifactId>maven-assembly-plugin</artifactId>

    <configuration>

        <appendAssemblyId>false</appendAssemblyId>

        <descriptors>

            <descriptor>assembly.xml</descriptor>

        </descriptors>

    </configuration>

    <executions>

        <execution>

            <id>make-assembly</id>

            <phase>package</phase>

            <goals>

                <goal>single</goal>

            </goals>

        </execution>

    </executions>

</plugin>

<assembly

        xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">

    <id>package</id>

    <formats>

        <format>zip</format>

    </formats>

    <includeBaseDirectory>true</includeBaseDirectory>

    <fileSets>

        <fileSet>

            <directory>${project.build.directory}/</directory>

            <outputDirectory></outputDirectory>

            <includes>

                <include>app.jar</include>

            </includes>

        </fileSet>

        <fileSet>

            <directory>bin</directory>

            <outputDirectory>/bin</outputDirectory>

            <fileMode>777</fileMode>

        </fileSet>

    <fileSet>

            <directory>tmp</directory>

            <outputDirectory>/tmp</outputDirectory>

            <fileMode>777</fileMode>

        </fileSet>

    </fileSets>

</assembly>

maven-resources-plugin

负责将项目的资源文件拷贝到目标目录, 为后续打包阶段做好准备。

nonFilteredFileExtension: 指定额外不被过滤的文件后缀

<plugin>

    <groupId>org.apache.maven.plugins</groupId>

    <artifactId>maven-resources-plugin</artifactId>

    <configuration>

        <nonFilteredFileExtensions>

            <nonFilteredFileExtension>xlsx</nonFilteredFileExtension>

            <nonFilteredFileExtension>xls</nonFilteredFileExtension>

            <nonFilteredFileExtension>ttf</nonFilteredFileExtension>

            <nonFilteredFileExtension>ttc</nonFilteredFileExtension>

        </nonFilteredFileExtensions>

    </configuration>

</plugin>

maven-javadoc-plugin

javadoc插件

<plugin>

    <groupId>org.apache.maven.plugins</groupId>

    <artifactId>maven-javadoc-plugin</artifactId>

    <configuration>

        <skip>${maven.javadoc.skip}</skip>

    </configuration>

    <executions>

        <execution>

            <id>attach-javadocs</id>

            <phase>package</phase>

            <goals>

                <goal>jar</goal>

            </goals>

        </execution>

    </executions>

</plugin>

maven-surefire-plugin

用于在test阶段执行应用的单元测试

<plugin>

    <groupId>org.apache.maven.plugins</groupId>

    <artifactId>maven-surefire-plugin</artifactId>

    <configuration>

        <includes>

            <include>**/*Test.java</include>

            <include>**/*Spec.java</include>

        </includes>

    </configuration>

</plugin>

spring-boot-maven-plugin

Springboot 提供的导报插件,插件的核心goal是repackage, 生成可执行的jar包或war包。项目引入该插件后, mvn package将执行改插件的repackage目标。

<plugin>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-maven-plugin</artifactId>

    <version>2.1.2.RELEASE</version>

    <configuration>

        <skip>${maven.springboot.skip}</skip>

    </configuration>

    <executions>

        <execution>

            <goals>

                <goal>repackage</goal>

            </goals>

        </execution>

    </executions>

</plugin>

maven-dependency-plugin

dependency插件提供操作项目依赖工件的能力, 拷贝或解压本地或远程仓库的工件到指定目录。

<project>

  [...]

  <build>

    <plugins>

      <plugin>

        <groupId>org.apache.maven.plugins</groupId>

        <artifactId>maven-dependency-plugin</artifactId>

        <version>3.5.0</version>

        <configuration>

          <artifactItems>

            <artifactItem>

              <groupId>[ groupId ]</groupId>

              <artifactId>[ artifactId ]</artifactId>

              <version>[ version ]</version>

              <type>[ packaging ]</type>

              <classifier> [classifier - optional] </classifier>

              <overWrite>[ true or false ]</overWrite>

              <outputDirectory>[ output directory ]</outputDirectory>

              <destFileName>[ filename ]</destFileName>

            </artifactItem>

          </artifactItems>

          <!-- other configurations here -->

        </configuration>

      </plugin>

    </plugins>

  </build>

  [...]

</project>

maven-enforcer-plugin

enforce 产检用于对环境进行检查。如maven版本, JDK版本等。保证项目保持统一规范。

<project>

  [...]

  <build>

    <plugins>

      <plugin>

        <groupId>org.apache.maven.plugins</groupId>

        <artifactId>maven-enforcer-plugin</artifactId>

        <version>3.3.0</version>

        <executions>

          <execution>

            <id>enforce-versions</id>

            <goals>

              <goal>enforce</goal>

            </goals>

            <configuration>

              <rules>

                <bannedPlugins>

                  <!-- will only display a warning but does not fail the build. -->

                  <level>WARN</level>

                  <excludes>

                    <exclude>org.apache.maven.plugins:maven-verifier-plugin</exclude>

                  </excludes>

                  <message>Please consider using the maven-invoker-plugin (http://maven.apache.org/plugins/maven-invoker-plugin/)!</message>

                </bannedPlugins>

                <requireMavenVersion>

                  <version>2.0.6</version>

                </requireMavenVersion>

                <requireJavaVersion>

                  <version>1.5</version>

                </requireJavaVersion>

                <requireOS>

                  <family>unix</family>

                </requireOS>

              </rules>

            </configuration>

          </execution>

        </executions>

      </plugin>

    </plugins>

  </build>

  [...]

</project>

插件开发

插件开发从IDEA创建项目或Module时选择Maven工程, archetype选择mave-archetype-mojo,可以帮助快速建议一个插件工程雏形。

Maven插件介绍二

Maven常用插件

Maven – Available Plugins 了解更多maven插件。。

maven-compiler-plugin

编译插件,主要参数为:

Source: 源文件JDK版本

Target:目标类文件JDK版本

Encoding: 编译字符, 默认是${project.build.sourceEncoding}

<plugin>

    <groupId>org.apache.maven.plugins</groupId>

    <artifactId>maven-compiler-plugin</artifactId>

    <configuration>

        <source>1.8</source>

        <target>1.8</target>

        <encoding>${project.build.sourceEncoding}</encoding>

        <compilerArgs>

            <compilerArg>-parameters</compilerArg>

        </compilerArgs>

    </configuration>

</plugin>

maven-assembly-plugin

工具插件, 用于将项目打包为一个可对外分发的文件, 如zip等压缩文件。 通常用于持续集成和持续部署中在项目package成jar后再和其他运行文件, 如执行脚本等一起打包分发到服务器中进行自动化部署。

<plugin>

    <groupId>org.apache.maven.plugins</groupId>

    <artifactId>maven-assembly-plugin</artifactId>

    <configuration>

        <appendAssemblyId>false</appendAssemblyId>

        <descriptors>

            <descriptor>assembly.xml</descriptor>

        </descriptors>

    </configuration>

    <executions>

        <execution>

            <id>make-assembly</id>

            <phase>package</phase>

            <goals>

                <goal>single</goal>

            </goals>

        </execution>

    </executions>

</plugin>

<assembly

        xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">

    <id>package</id>

    <formats>

        <format>zip</format>

    </formats>

    <includeBaseDirectory>true</includeBaseDirectory>

    <fileSets>

        <fileSet>

            <directory>${project.build.directory}/</directory>

            <outputDirectory></outputDirectory>

            <includes>

                <include>app.jar</include>

            </includes>

        </fileSet>

        <fileSet>

            <directory>bin</directory>

            <outputDirectory>/bin</outputDirectory>

            <fileMode>777</fileMode>

        </fileSet>

    <fileSet>

            <directory>tmp</directory>

            <outputDirectory>/tmp</outputDirectory>

            <fileMode>777</fileMode>

        </fileSet>

    </fileSets>

</assembly>

maven-resources-plugin

负责将项目的资源文件拷贝到目标目录, 为后续打包阶段做好准备。

nonFilteredFileExtension: 指定额外不被过滤的文件后缀

<plugin>

    <groupId>org.apache.maven.plugins</groupId>

    <artifactId>maven-resources-plugin</artifactId>

    <configuration>

        <nonFilteredFileExtensions>

            <nonFilteredFileExtension>xlsx</nonFilteredFileExtension>

            <nonFilteredFileExtension>xls</nonFilteredFileExtension>

            <nonFilteredFileExtension>ttf</nonFilteredFileExtension>

            <nonFilteredFileExtension>ttc</nonFilteredFileExtension>

        </nonFilteredFileExtensions>

    </configuration>

</plugin>

maven-javadoc-plugin

javadoc插件

<plugin>

    <groupId>org.apache.maven.plugins</groupId>

    <artifactId>maven-javadoc-plugin</artifactId>

    <configuration>

        <skip>${maven.javadoc.skip}</skip>

    </configuration>

    <executions>

        <execution>

            <id>attach-javadocs</id>

            <phase>package</phase>

            <goals>

                <goal>jar</goal>

            </goals>

        </execution>

    </executions>

</plugin>

maven-surefire-plugin

用于在test阶段执行应用的单元测试

<plugin>

    <groupId>org.apache.maven.plugins</groupId>

    <artifactId>maven-surefire-plugin</artifactId>

    <configuration>

        <includes>

            <include>**/*Test.java</include>

            <include>**/*Spec.java</include>

        </includes>

    </configuration>

</plugin>

spring-boot-maven-plugin

Springboot 提供的导报插件,插件的核心goal是repackage, 生成可执行的jar包或war包。项目引入该插件后, mvn package将执行改插件的repackage目标。

<plugin>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-maven-plugin</artifactId>

    <version>2.1.2.RELEASE</version>

    <configuration>

        <skip>${maven.springboot.skip}</skip>

    </configuration>

    <executions>

        <execution>

            <goals>

                <goal>repackage</goal>

            </goals>

        </execution>

    </executions>

</plugin>

maven-dependency-plugin

dependency插件提供操作项目依赖工件的能力, 拷贝或解压本地或远程仓库的工件到指定目录。

<project>

  [...]

  <build>

    <plugins>

      <plugin>

        <groupId>org.apache.maven.plugins</groupId>

        <artifactId>maven-dependency-plugin</artifactId>

        <version>3.5.0</version>

        <configuration>

          <artifactItems>

            <artifactItem>

              <groupId>[ groupId ]</groupId>

              <artifactId>[ artifactId ]</artifactId>

              <version>[ version ]</version>

              <type>[ packaging ]</type>

              <classifier> [classifier - optional] </classifier>

              <overWrite>[ true or false ]</overWrite>

              <outputDirectory>[ output directory ]</outputDirectory>

              <destFileName>[ filename ]</destFileName>

            </artifactItem>

          </artifactItems>

          <!-- other configurations here -->

        </configuration>

      </plugin>

    </plugins>

  </build>

  [...]

</project>

maven-enforcer-plugin

enforce 产检用于对环境进行检查。如maven版本, JDK版本等。保证项目保持统一规范。

<project>

  [...]

  <build>

    <plugins>

      <plugin>

        <groupId>org.apache.maven.plugins</groupId>

        <artifactId>maven-enforcer-plugin</artifactId>

        <version>3.3.0</version>

        <executions>

          <execution>

            <id>enforce-versions</id>

            <goals>

              <goal>enforce</goal>

            </goals>

            <configuration>

              <rules>

                <bannedPlugins>

                  <!-- will only display a warning but does not fail the build. -->

                  <level>WARN</level>

                  <excludes>

                    <exclude>org.apache.maven.plugins:maven-verifier-plugin</exclude>

                  </excludes>

                  <message>Please consider using the maven-invoker-plugin (http://maven.apache.org/plugins/maven-invoker-plugin/)!</message>

                </bannedPlugins>

                <requireMavenVersion>

                  <version>2.0.6</version>

                </requireMavenVersion>

                <requireJavaVersion>

                  <version>1.5</version>

                </requireJavaVersion>

                <requireOS>

                  <family>unix</family>

                </requireOS>

              </rules>

            </configuration>

          </execution>

        </executions>

      </plugin>

    </plugins>

  </build>

  [...]

</project>

插件开发

插件开发从IDEA创建项目或Module时选择Maven工程, archetype选择mave-archetype-mojo,可以帮助快速建议一个插件工程雏形。

POM文件

默认生成项目的POM文件版本较低, 需要做以下修改:

  1. 升级maven-plugin-api包版本到3.8.3。自动生成POM的版本是低版本的2.0;
  2. 添加maven-plugin-annotations依赖,这个包内包含了Maven相关的注解,可以取代Tag;
  3. 添加maven-plugin-plugin插件依赖,这个包可以使插件支持JDK1.8以上的版本;

核心入口类

@Mojo(name = "sayHi")

public class MyMojo

    extends AbstractMojo

{

    @Parameter(name = "name", defaultValue = "test")

    private String name;

    public void execute() {

        getLog().info("This is sayHi to " + name);

    }

}

@Mojo定义一个插件目标,name对应目标名字, 通过mvn 插件名:目标名,可以执行目标。

@Parameter配置<Parameter>标签内容

AbstractMojo: 继承AbstractMojo,实现execute方法就完成了插件的开发。

编译、打包和部署

Maven mojo插件提供生命周期过程中相应阶段的试下, 同普通maven项目一样进行编译、打包和部署。

使用

       独立开发的插件使用同官方一样,应用项目POM文件中引入插件, 根据需要绑定生命周期中的特定阶段或独立运行。

mybatis-generator-maven-plugin

mybatis generator是开发中常用的maven插件,项目源码地址:

https://github.com/mybatis/generator/tree/master/core/mybatis-generator-maven-plugin

@Mojo(name = "generate", defaultPhase = LifecyclePhase.GENERATE_SOURCES,

        requiresDependencyResolution = ResolutionScope.TEST)

public class MyBatisGeneratorMojo extends AbstractMojo {

增强工具 mybatis plus 也提供相应的代码生成插件。

<dependency>

    <groupId>com.baomidou</groupId>

    <artifactId>mybatis-plus-generator</artifactId>

    <version>${mybatis-plus-generator.version}</version>

</dependency>

在此衍生出各类定制的代码规范生成工具, 项目中除了Controller-Service-Dao的代码规范外还有很多类似的场景可以参考这两个工具实现合适的代码生成工具,如通用的对外接口代码规范。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值