Maven之——插件配置与解析

Maven之——插件配置与解析

插件配置就是为绑定插件指定其预定义的参数值、来进一步调整插件目标所执行的任务。可以通过命令行和POM中插件全局配置的形式来配置、不是所有的插件配置都可以通过命令行配置的。

1、    命令行插件配置

如maven-surefire-plugin插件提供一个maven.test.skip参数、当值为true时会跳过执行测试、命令行执行方式:

        mvninstall –Dmaven.test.skip=true
        mvn install

可以对比两者在控制台的输出就发现、下面多了test阶段:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Runningorg.andy.items.thkinjava.string.ArrayListDisplayTest
[Latte, 0,Americano, 1, Latte, 2, Breve, 3, Breve, 4, Mocha, 5, Latte, 6, Ameri
cano, 7,Cappuccino, 8, Cappuccino, 9]
Tests run: 1,Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.046 sec
Runningorg.andy.items.thkinjava.string.Ex7Test
Tests run: 1,Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Running org.andy.items.thkinjava.string.ImmutableTest
Tests run: 1,Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Runningorg.andy.items.thkinjava.string.InfiniteRecursionTest

2、    POM中插件全局配置

在声明插件的时候、对此插件进行一个全局配置、后面所有使用该插件的都要遵循这个配置比如指定maven-compile-plugin编译Java1.7版本的源文件:

    <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>

上面的设定会报错、因为本地环境是jdk1.7 、而要求使用1.8版本的编译、

        [ERROR] Failed to execute goalorg.apache.maven.plugins:maven-compiler-plugin:3.
        1:compile (default-compile) on project items-thkinjava:Fatal error compiling: i
        nvalid target release: 1.8 -> [Help 1]

将1.8改成1.7就行、并且可以是1.7以前的版本、表示向上兼容以前的版本。(记得编译之前使用 mvn clean 将前面编译的class删除)。

3、    获取插件信息

比如查看插件目标有哪些参数可以使用、使用方式、示例、常见问题等:

网址:http://maven.apache.org/plugins/index.html

下载地址:http://repo1.maven.org/maven2/org/apache/maven/plugins/

4、    插件解析机制

Maven通过插件目标不需要提供完整的插件坐标信息就能解析得到正确的插件、这样简化了插件的使用和配置、但是也让出现问题时更难以定位错误来源。了解解析机制、了解本质。

5、    插件仓库

插件与依赖很类似、他们都是在使用的时候会去本地仓库寻找、找不到就到远程仓库找、找到之后下载到本地仓库然后使用、但是插件仓库与依赖仓库是不同的两种仓库、maven会区别对待依赖仓库和插件仓库、当一个插件在本地仓库中找不到时他会到插件仓库去寻找、不会到依赖仓库中寻找。插件仓库的配置与依赖仓库很类似、不同与依赖仓库使用的Repositories和Repository、插件仓库使用的是pluginRepositories和pluginRepository、maven内置了插件仓库配置、也是在超级POM——$M2-HOME/lib/maven-model-builder3.2.3.jar/org/apache/maven/model/pom.xml中:

    <pluginRepositories>
        <pluginRepository>
            <id>central</id>
            <name>CentralRepository</name>
            <url>https://repo.maven.apache.org/maven2</url>
            <layout>default</layout>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <releases>
                <updatePolicy>never</updatePolicy>
            </releases>
        </pluginRepository>
    </pluginRepositories>

与依赖仓库很类似:

    <repositories>
        <repository>
            <id>central</id>
            <name>CentralRepository</name>
            <url>https://repo.maven.apache.org/maven2</url>
            <layout>default</layout>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

对比发现、两者仓库就是中央仓库、但是如果没有插件仓库配置、maven在本地找不到插件的时候就不会去中央仓库找所需插件。并且出于稳定性考虑、他关闭了快照版本的插件、和从不更新本地仓库中存在的插件。

6、    插件的默认groupId

在POM中配置插件如果不配置groupId则表示是maven官方插件、也就是说groupId是org.apache.maven.plugins、这样做没有省多少配置、也会让不熟悉的人感到疑惑、不推荐使用。

7、    解析插件版本

Maven也是通过metadata.xml解析版本的、同样maven3在当插件没有声明版本的时候不再解析SNAPSHOT和latest、而是用release。

8、    解析插件前缀

Maven可以通过插件前缀:插件目标的方式执行命令、比如clean:clean、会执行maven-clean-plugins:clean、maven是根据**/*/plugins/maven-metadata.xml和自己本地仓库中的com/your/plugins/maven-metadata.xml综合、根据前缀获取插件完整信息。

总结

掌握maven的三套生命周期、阶段、和每个阶段默认的插件目标、掌握生命周期、插件两个概念、会配置插件、插件插件、自定义绑定、配置插件行为、知道插件默认仓库在哪里配置、是什么、会配置插件仓库、掌握插件与依赖之间的联系区别。

时间: 2024-11-10 07:35:06

Maven之——插件配置与解析的相关文章

Maven常用插件配置和使用

主要介绍Maven的几个常见第三方插件(cobertura.findbugs.source.assembly.插件开发)配置和使用,接Maven介绍 maven本质上是一个插件框架,它的所有工作都交给插件来做,每个插件可以有多个goal.除了自带的插件之外还有很多比较成熟的第三方插件,我们也很容易上手进行简单的插件开发,下面一一介绍 1 自带插件maven自带的核心插件为Build plugins和Reporting plugins.mvn compile编译源码实际上就利用到了maven-co

Maven tomcat插件配置及使用

pom.xml配置 <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>tomcat-maven-plugin</artifactId> <version>1.1</version> <configuration> <path>/cxx</path> <por

maven常用插件配置详解

常用插件配置详解Java代码    <!-- 全局属性配置 --> <properties> <project.build.name>tools</project.build.name> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> project.build.name:  用来定义war包名称  proje

maven工程插件配置

1 <build> 2 <!-- 该级工程会加载插件,放在父工程里 --> 3 <plugins> 4 <!-- 资源文件拷贝插件 --> 5 <plugin> 6 <groupId>org.apache.maven.plugins</groupId> 7 <artifactId>maven-resources-plugin</artifactId> 8 <version>2.7<

maven常用插件配置

1.maven-jar-plugin插件<build> <plugins> <!-- 排除资源文件中的properties文件,不需要打到jar中,后面通过assembly插件打包到conf目录中 --> <plugin> <artifactId>maven-jar-plugin</artifactId> <configuration> <excludes> <exclude>**/*.proper

Maven tomcat插件配置和使用

pom.xml组态 <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>tomcat-maven-plugin</artifactId> <version>1.1</version> <configuration> <path>/cxx</path> <por

[Maven]Eclipse插件之Maven配置及问题解析.

前言:今天在自己环境装了Maven环境, 并且安装了Eclipse插件, 在查找插件过程中确实遇到一些问题, 好不容易找到一个  却又有问题.装好了插件之后, 用Eclipse创建Maven项目却出现两个问题, 在这里总结一些, 方便其他朋友更好的解决问题. 一, Maven环境的安装在这里就不做过多的赘述, 首先大家 需要去Maven官网下载 Maven包, 然后配置Maven环境.Maven环境变量配置: http://jingyan.baidu.com/article/cb5d61050b

eclipse maven plugin 插件 安装 和 配置

环境准备: eclipse(Helios) 3.6 maven 3.0.4 maven3 安装: 安装 Maven 之前要求先确定你的 JDK 已经安装配置完成.Maven是 Apache 下的一个项目,目前最新版本是 3.0.4,我用的也是这个. 首先去官网下载 Maven:http://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-3.0.4-bin.tar.gz 下载完成之后将其解压,我将解压后的文件夹重命名成 mave

maven常用插件pom配置

一.问题描述: 部署一个maven打包项目时,jar包,依赖lib包全部手动上传至服务器,然后用maven部署报错:Exception in thread "main" java.lang.NoClassDefFoundError:,当时心想可能是依赖的lib包有问题,各种重新部署(以为是依赖的包没有更新),确忽略了一个大问题:pom.xml没仔细检查.解决方法:最终发现<plugin>                <groupId>org.apache.ma