0%

maven插件整理

maven插件整理

​ 常用maven插件整理,maven本质上是一个插件框架,它的核心并不具备执行任何构建任务的能力,所有的任务都是交由插件完成。

maven插件官网,里面有一个Supported By The Maven Project标题下的列表中的插件,是由maven官方支持的插件。还有一个Outside The Maven Land下的At MojoHaus (formerly known as codehaus.org)这个不是官网的插件列表,但其中的部分插件也是比较常用的。

1.maven-antrun-plugin

​ 主要作用是能让用户在maven项目中运行Ant任务。

2.maven-archetype-plugin

Archtype指项目的骨架,主要作用是创建项目骨架原型。

  • archetype:generate:使用交互式的方式提示用户输入必要的信息以创建项目

3.maven-assembly-plugin

​ 这个插件就比较常用,用来对项目制作一些压缩包,定制压缩包中的内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/resources/config/assembly.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>

4.maven-dependency-plugin

​ 主要作用是分析项目中的依赖。

  • dependency:list:项目最终解析到的依赖列表
  • dependency:tree:进一步的描绘项目依赖树
  • dependency:analyze:项目依赖潜在的问题
  • dependency:copy-dependencies:能将项目依赖从本地Maven仓库复制到某个特定的文件夹下面

5.maven-enforcer-plugin

​ 设置约束项目的一系列规则并强制遵守,比如maven的版本,java的版本,禁止某些依赖,某些依赖的版本最低版本,在父pom中配置规则,当不符合规则时,会报错。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.3.1</version>
<executions>
<execution>
<id>enforce</id>
<phase>validate</phase>
<goals>
<goal>display-info</goal>
<goal>enforce</goal>
</goals>
</execution>
</executions>
<configuration>
<!--规则检查不通过就构建失败;Default:false. -->
<!--<failFast>true</failFast>-->
<rules>
<!--maven的版本要大于3.0.4-->
<requireMavenVersion>
<version>3.0.4</version>
</requireMavenVersion>
<!--java的版本要大于1.6-->
<requireJavaVersion>
<version>1.6.0</version>
</requireJavaVersion>
<!--bannedDependencies表示禁止使用的依赖-->
<bannedDependencies>
<!--是否检查传递性依赖(间接依赖)-->
<searchTransitive>true</searchTransitive>
<!--禁止的依赖列表-->
<excludes>
<exclude>junit:junit</exclude>
</excludes>
<message>must use TestNG</message>
</bannedDependencies>
</rules>
</configuration>
</plugin>

exclude标签中,可以通过通配符的方式设置一些依赖规则,其他详见内置版本范围规则

1
2
3
4
5
6
7
8
9
10
<excludes>
<!--groupId[:artifactId][:version][:type][:scope][:classifier]-->
<exclude>org.log</exclude>
<exclude>org.log:log4j</exclude>
<exclude>org.log:log4j:1.0</exclude>
<exclude>org.log:*:1.2</exclude><!--排除1.2及其以上版本,等价于[1.2,)-->
<exclude>org.log:*:[1.2]</exclude><!--明确排除1.2版本-->
<exclude>org.log:*:*:jar:test</exclude>
<exclude>*:*:*:jar:compile:tests</exclude>
</excludes>

6.maven-help-plugin

​ 一个辅助工具,用来获取一些详细使用信息。

1
2
3
4
5
6
7
## 查看`versions-maven-plugin`这个插件的详细描述,会输出这个插件的所有`goal`
mvn help:describe -Dplugin=org.codehaus.mojo:versions-maven-plugin:2.7
## 查看指定的某个goal
mvn help:describe -Dplugin=org.codehaus.mojo:versions-maven-plugin:2.7 -Dgoal=set

## 查看有效settings
mvn help:effective-settings
-------------本文结束感谢您的阅读-------------