`

Maven插件配置与解析

阅读更多

插件配置就是绑定插件,指定其预定义的参数值,来进一步调整插件目标所执行的任务。

可以通过命令行POM中插件全局配置的形式来配置,不是所有的插件配置都可以通过命令行配置的。

 

1、命令行插件配置

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

mvn install –Dmaven.test.skip=true

mvn install

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

 

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: invalid 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使用插件目标不需要提供完整的插件坐标信息就能解析得到正确的插件,这样简化了插件的使用和配置,但是也让出现问题时更难以定位错误来源,了解解析机制和本质。

如mvn eclipse:eclipse

 

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。

<plugin>
<name>Apache Maven Clean Plugin</name>
<prefix>clean</prefix>
<artifactId>maven-clean-plugin</artifactId>
</plugin>

 

maven是根据**/*/plugins/maven-metadata.xml和自己本地仓库中的com/your/plugins/maven-metadata.xml综合,根据前缀获取插件完整信息。

maven会默认以org.apache.maven.plugins作为groupId,收集所有插件仓库的元数据org/apache/maven/plugins/maven-metadata.xml

而默认的仓库为http://repo.maven.apache.org/maven2/,即查找http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-metadata.xml

添加默认groupId的方式为在maven的settings.xml文件里添加

<settings>
<pluginGroups>
<pluginGroup>org.jvnet.hudson.tools</pluginGroup>
</pluginGroups>
</settings>

 

加入这一行信息可以在我们使用Hudson的maven插件时使用缩略名(比如使用hpi:create代替org.jvnet.hudson.tools:maven-hpi-plugin:1.23:create)

 

总结

掌握maven的三套生命周期,阶段,和每个阶段默认的插件目标。

掌握生命周期,插件两个概念,会配置插件,配置插件行为,知道插件默认仓库在哪里配置,是什么,会配置插件仓库,掌握插件与依赖之间的联系区别。

分享到:
评论

相关推荐

    eclipse安装的maven插件

    Eclipse的Maven插件会实时解析这个文件,并提供代码提示和错误检查功能。 总之,Eclipse的Maven插件是Java开发者不可或缺的工具,它使得Eclipse与Maven紧密集成,使得项目管理和构建工作更加便捷高效。通过以上步骤...

    Maven3实战笔记05仓库依赖解析与插件解析

    ### Maven3实战笔记05仓库依赖解析与插件解析 #### 一、Maven仓库依赖解析 Maven 是一个项目管理和构建工具,它通过一种称为“仓库依赖解析”的过程来管理项目的依赖关系。仓库依赖解析是指Maven如何查找并解决...

    eclipse离线安装maven插件详解(内附maven插件包)

    本篇文章将详细解析如何在Eclipse中离线安装Maven插件,同时提供内附的Maven插件包,以解决在线安装过程中的速度问题和可能遇到的错误。 首先,我们需要准备的是Maven的安装。Maven是Apache开源的一个项目管理工具...

    eclipse安装maven插件

    通过以上步骤,你已经在Eclipse中成功安装并配置了Maven插件,现在可以充分利用Maven的强大功能,如依赖管理、构建自动化,以及与其他开发工具的集成,提高开发效率。记住,持续更新Eclipse和Maven插件以获取最新的...

    Maven插件手动下载

    5. **配置POM.xml**:虽然插件已存放在本地仓库,但为了使Maven知道如何使用它,还需要在项目的POM.xml文件中添加对应的插件配置。例如: ```xml &lt;groupId&gt;org.apache.maven.plugins &lt;artifactId&gt;maven-...

    [maven] 常用插件解析.docx

    Maven 插件解析 Maven 作为一个插件框架,其核心并不执行任何具体的构建任务,而是交给插件来完成。每个任务对应了一个插件目标(goal),每个插件会有一个或者多个目标。用户可以通过两种方式调用 Maven 插件目标...

    jenkins 必装maven插件

    2. **Jenkins中的Maven插件**:Jenkins Maven插件是Jenkins与Maven进行交互的核心组件。它允许Jenkins理解Maven的构建过程,并可以调用Maven命令执行构建、测试、打包等任务。此外,该插件还能收集Maven生成的测试...

    eclipse的maven插件

    总的来说,Eclipse的Maven插件M2E极大地提高了开发效率,减少了项目配置的工作量,使得开发者可以更加专注于代码编写和项目开发。对于大型项目或团队开发,这样的集成工具尤为重要,因为它可以确保所有成员都在相同...

    Eclipse中Maven插件

    Eclipse中的Maven插件是开发Java项目时不可或缺的工具,它将强大的Maven构建系统与流行的Eclipse集成开发环境(IDE)相结合,为开发者提供了一种高效且规范化的项目管理方式。Maven是一个自动化构建工具,主要用于...

    maven插件jar

    ** Maven 插件与 JAR 文件的深度解析 ** Maven 是一个强大的项目管理工具,广泛应用于Java开发领域。它简化了构建、依赖管理和项目生命周期的管理,通过使用一种标准化的项目对象模型(Project Object Model,POM)...

    eclipse maven插件

    总之,Eclipse Maven插件m2e极大地提升了在Eclipse环境中进行Maven项目开发的效率和便利性,它将Maven的强大功能与Eclipse的优秀开发体验相结合,是Java开发者不可或缺的工具之一。通过熟练掌握和使用m2e,开发者...

    自定义maven插件:自动生成API的word文档源代码

    1. **配置解析**:用户在项目的pom.xml文件中配置插件的相关参数,包括接口类的路径、参数类的位置以及自定义模板文件等信息。这些配置使得插件知道需要处理哪些源代码。 2. **源代码分析**:插件运行时,会扫描...

    eclipse4.5 mars 64位 自带Maven插件

    总之,Eclipse 4.5 Mars 64位版本与内置的Maven插件(M2E)结合,提供了一个强大的开发环境,简化了Java项目的构建和管理流程,提高了开发效率。无论是个人开发者还是大型团队,都能从中受益。通过利用Maven的强大...

    maven插件的eclipse插件

    将Maven与Eclipse结合使用的桥梁就是"Maven插件的Eclipse插件",也称为m2e(Maven Integration for Eclipse)。 m2e是Eclipse官方提供的一个插件,它的主要作用是将Maven的功能无缝集成到Eclipse中,让开发者在...

    maven插件

    ### Maven插件的定义与作用 1. **定义**:Maven插件是Maven生态系统中的可插拔组件,它们提供了实现Maven生命周期中不同阶段的具体行为。每个插件包含一个或多个目标(Goals),这些目标对应于特定的构建任务。 2....

    Maven使用tomcat8-maven-plugin插件.docx

    Tomcat 是一个流行的 Web 服务器,Maven 提供了一个插件 tomcat8-maven-plugin 来实现 Maven 项目与 Tomcat 服务器的集成。下面我们将详细介绍如何使用 tomcat8-maven-plugin 插件。 tomcat8-maven-plugin 插件的...

    Maven仓库配置全解析:深入repositories的神秘世界

    4. **插件和目标**:Maven拥有丰富的插件系统,可以通过插件扩展构建过程。每个插件都可以执行特定的任务或目标。 5. **跨平台**:Maven可以在多种操作系统上运行,因为它是基于Java开发的。 6. **可移植性**:...

    Maven学习必要插件

    Maven插件是实现生命周期目标的关键,例如,`maven-compiler-plugin`用于编译源代码,`maven-surefire-plugin`进行单元测试。预配置的“Maven学习必要插件”可能包含了这些基础插件,以便开发者可以直接使用。 5. ...

Global site tag (gtag.js) - Google Analytics