Maven Plugin使用记录
Maven插件机制
Maven的核心仅仅定义了抽象的生命周期,具体的任务是交由插件完成的,插件以独立的构件形式存在,Maven会在需要的时候下载并使用插件。
插件机制的目的
插件本身,为了能够复用代码,它往往能够完成多个任务,为每个这样的功能编写一个独立的插件显然是不可取的,因为这些任务背后都有很多可以复用的代码,这些功能都聚集在一个插件里,每个功能就是一个插件目标。
通用写法 compiler:compile(插件前缀:插件目标)
插件的绑定
Maven生命周期的阶段与插件的目标相互绑定,以完成某个具体的构建任务。
- clean生命周期阶段插件绑定关系
生命周期阶段 | 插件目标 | 执行任务 |
---|---|---|
pre-clean | ||
clean | maven-clean-plugin:clean | 删除项目的输出目录 |
post-clean |
- site生命周期阶段与插件绑定关系
生命周期阶段 | 插件目标 | 执行任务 |
---|---|---|
pre-site | ||
site | maven-site-plugin:site | target/site生成站点 |
post-site | ||
site-deploy | maven-site-plugin:deploy | 部署到web服务器 |
- default生命周期阶段与插件绑定关系(jar)
生命周期阶段 | 插件目标 | 执行任务 |
---|---|---|
process-resources | maven-resources-plugin:resources | 复制主资源文件至主输出目录 |
compile | maven-compiler-plugin:compile | 编译主代码至主输出目录 |
process-test-resources | maven-resources-plugin:testResources | 复制测试资源文件至测试输出目录 |
test-compile | maven-compiler-plugin:testCompile | 编译测试代码至测试输出目录 |
test | maven-surefire-plugin:test | 执行测试用例 |
package | maven-jar-plugin:jar | 创建项目jar包 |
install | maven-install-plugin:install | 将项目输出构件安装到本地仓库 |
deploy | maven-deploy-plugin:deploy | 将项目输出构件部署到远程仓库 |
插件配置
- 命令行配置
# –D 参数
是Java自带,功能是通过命令行设置一个Java系统属性,Maven简单地重用了该参数。
# maven-surefire-plugin
maven-surefire-plugin 提供一个 maven.test.skip 参数,当其值为 true的时候,就会跳过执行测试。
- pom 中插件全局配置
如指定jdk编译版本
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
其他插件
Maven-release-plugin
# 版本管理
# 功能:
SNAPSHOT快照版本,RELEASE正式版本
正式发布流程:
1. 在trunk中,更新pom版本从1.0-SNAPSHOT到1.0
2. 对1.0打一个git tag
3. 针对tag进行mvn deploy,发布正式版本
4. 更新trunk从1.0到1.1-SNAPSHOT
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<autoVersionSubmodules>true</autoVersionSubmodules>
<tagNameFormat>v@{project.version}</tagNameFormat>
<generateReleasePoms>false</generateReleasePoms>
<arguments>-DskipTests</arguments>
...
</configuration>
</plugin>
<scm>
<developerConnection>scm:git:xxx</developerConnection>
</scm>
命令:
mvn release:prepare release版本打tag,snapshot版本自动迭代
mvn release:perform release版本打包,分发到远程Maven仓库中
maven版本规则
<主版本>.<次版本>.<增量版本>
Maven-checkstyle-plugin
# 代码风格检查
添加checkstyle配置文件
<checkstyle.config.location>checkstyle.xml</checkstyle.config.location>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.9.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
<version>2.3</version>
</plugin>
mvn命令检测代码
mvn checkstyle:checkstyle 检查工程是否满足checkstyle
mvn jxr:jxr 命令可以查看有错的对应代码
Maven-shade-plugin
# 绑定package生命周期目标,用户项目打可执行包,包含依赖,以及对依赖进行取舍过滤
Maven-resources-plugin
# Maven中的资源文件默认存在于src/main/resources,resources用于提供自定义资源打包功能
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>${maven-resources-plugin.version}</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
//自定义输出目录,将resource/conf下的配置打包到输出目录/conf
<outputDirectory>${build.path}/conf</outputDirectory>
<resources>
<resource>
<directory>../conf/</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
Maven-source-plugin
# 自动将源码打包并发布的功能,
mvn install:将source install到repository
mvn deploy:将source deploy到remote-repository
mvn source:jar:单独打包源码