maven学习笔记--常用插件(plugins)和目标(goals)
来源:互联网 发布:中国人的劣根性知乎 编辑:程序博客网 时间:2024/05/31 11:03
Maven 的核心其实不做什么实际的事情,除了解析一些 XML 文档,管理生命周期与插件之外。Maven 被设计成将主要的职责委派给一组 Maven 插件,这些插件可以影响 Maven 生命周期,提供对目标的访问。绝大多数 Maven 的动作发生于Maven 插件的目标,如编译源码,打包二进制代码,发布站点和其它构建任务。
一个Maven插件是一个单个或多个目标的集合,Maven插件的例子有一些简单但核心的插件,像Jar插件,它包含了一组创建JAR文件的目标,Compiler插件,它包含了一组编译源代码和测试代码的目标,或者Surefire插件,它包含一组运行单元测试和生成测试报告的目标。
一个目标是一个明确的任务,它可以作为单独的目标运行,或者作为一个大的构建的一部分和其它目标一起运行,目标的例子包括Compiler插件中的目标,它用来编译项目中的所有目标,用来运行单元测试。目标通过配置属性进行配置,以用来定制行为。例如,Compiler插件的compile目标定义了一组配置参数,它们允许你设置目标JDK版本或者选择是否用编译优化。
1. help插件
你需要一个工具来帮助你理解一些Maven使用的模型,以及某个插件有什么可用的目标。Maven Help插件能让你列出活动的Maven Profile,显示一个实际POM(effective POM),打印实际settings(effective settings),或者列出Maven插件的属性。 Maven Help 插件有四个目标。前三个目标是—— active-profiles, effective-pom 和effective-settings —— 描述一个特定的项目,它们必须在项目的目录下运行。 最后一个目标—— describe ——相对比较复杂,展示某个插件或者插件目标的相关信息。
help:active-profiles 列出当前构建中活动的Profile(项目的,用户的,全局的)。
help:effective-pom 显示当前构建的实际POM,包含活动的Profile。
help:effective-settings 打印出项目的实际settings, 包括从全局的settings和用户级别settings继承的配置。
help:describe 描述插件的属性。它不需要在项目目录下运行。但是你必须提供你想要描述插件的 groupId 和 artifactId。
当你开始使用Maven。
你会试图获得Maven插件的信息:插件如何工作?配置参数是什么?目标是什么? 你会经常使用 help:describe 目标来获取这些信息。通过 plugin 参数你可以指定你想要研究哪个插件,你可以传入插件的前缀(如help 插件就是 maven-help-plugin),或者可以是 groupId:artifact[:version]这里 version 是可选的。
比如, 下面的命令使用 help 插件的目标来输出Maven Help 插件的信息。
mvn help:describe -Dplugin=help
通过设置plugin参数来运行describe目标,输出为该插件的Maven坐标,目标前缀,和该插件的一个简要介绍。如果你想要 Help 插件输出完整的带有参数的目标列表,只要运行带有参数full的help:describe 目标就可以了,
mvn help:describe -Dplugin=help -Dfull该选项能让你查看插件所有的目标及相关参数。但是有时候这些信息显得太多了。这时候你可以获取单个目标的信息,设置 mojo 参数和参数。下面的命令列出了Compiler 插件的compile目标的所有信息(在maven里一个插件目标也被认为是一个mojo)
mvn help:describe -Dplugin=compiler -Dmojo=compile -Dfull
2. archetype插件
3. exec插件
exec 插件允许你运行 Java 类和其它脚本。 它不是 Maven 核心插件,但它可以从Codehaus3 的 Mojo4 项目得到。想要查看 Exec 插件的完整描述,运行:mvn help:describe -Dplugin=exec -Dfull
这会列出所有 Maven Exec 插件可用的目标。 Help 插件同时也会列出 Exec 插件的有效参数,如果你想要定制 Exec 插件的行为,传入命令行参数,你应该使用help:describe 提供的文档作为指南。
Exec 插件让我们能够在不往 classpath 载入适当的依赖的情况下,运行这个程序。 在任何其它的构建系统能够中,我们必须复制所有程序依赖到类似于 lib/ 的目录,这个目录包含一个 JAR 文件的集合。
4. dependency插件
有一个目标比较有用,就是将maven项目的依赖jar到出来:mvn dependency:copy-dependencies
mvn dependency:copy-dependencies
mvn dependency:copy-dependencies -DoutputDirectory=lib
mvn dependency:copy-dependencies -DoutputDirectory=lib -DincludeScope=compile
5. surefire插件
<project>[...]<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><testFailureIgnore>true</testFailureIgnore></configuration></plugin></plugins></build>[...]</project>这个表达式可以从命令行通过 -D 参数设置。mvn test -Dmaven.test.failure.ignore=true
maven.test.skip 属性就能跳过测试:mvn install -Dmaven.test.skip=true
<project>[...]<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><skip>true</skip></configuration></plugin></plugins></build>[...]</project>
6. assembly插件
Maven Assembly 插件是一个用来创建你应用程序特有分发包的插件。 你可以使用 Maven Assembly 插件
以你希望的任何形式来装配输出,只需定义一个自定义的装配描述符,即可生成一个可分发的JAR文件,该文件包含
了项目的二进制文件和所有的依赖。
要配置 Maven Assembly 插件, 需要在 pom.xml 中的build 配置中添加如下的 plugin 配置。如下图所示
<project>[...]<build><plugins><plugin><artifactId>maven-assembly-plugin</artifactId><configuration><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration></plugin></plugins></build>[...]</project>添加好这些配置以后,你可以通过运行 mvn assembly:assembly来构建这个装配。将工程依赖的jar包和工程都打成一个jar打包
在 target/***-1.0-jar-with-dependencies.jar 装配好之后, 我们可以在命令行重新运行 Main 类
java -cp **-1.0-jar-with-dependencies.jar *.*.Main
7. jetty插件
8. tomcat插件
9. source插件
10. compiler插件
windows平台默认使用GBK编码,如果工程编码为utf8,也需要在compiler插件中指出,否则按GBK编码,也会出问题
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.3</version> <configuration> <!--源码的Java版本--> <source>1.7</source> <!--运行环境的Java版本--> <target>1.7</target><encoding>UTF8</encoding> </configuration></plugin>
11、Resource插件
<filters><filter>${user.home}/asssd.properties</filter></filters><resources><resource><directory>src/main/resources</directory><filtering>true</filtering><includes><include>**/*</include></includes></resource><resource><directory>src/main/java</directory><includes><include>**.xml</include></includes></resource></resources>运行打包命令时,将src/main/resources中的所有文件和src/main/java目录下的所有.xml文件打到jar包中。
其中filters过滤器的作用是将所有引用文件中的${变量名称},替换成antx.properties文件中的变量值。要使用过滤器时,首先需要设置过滤器:
<filters>
<filter>${user.home}/antx.properties</filter>
</filters>
然后再启动过滤器, true需要过滤,false不需要过滤:
<filtering>true</filtering>
- maven学习笔记--常用插件(plugins)和目标(goals)
- Plugin(插件)和Goals(目标)
- maven入门:生命周期和插件Plugins(四)
- maven plugins 常用
- Maven学习笔记(三)--生命周期和插件
- Maven学习笔记之生命周期和插件
- maven核心概念--插件和目标
- maven插件与目标和生命周期阶段
- Maven讲解之 插件和目标
- maven学习笔记(一)常用插件配置详解
- Maven学习笔记——常用插件配置详解
- Maven学习笔记——常用插件配置详解
- 【MAVEN】项目管理插件maven-plugins
- Eclipse中的Maven插件运行项目中的Goals设置
- Maven插件与目标
- jmeter plugins学习笔记
- 学习笔记——Maven实战(七)常用Maven插件介绍(上)
- 学习笔记——Maven实战(八)常用Maven插件介绍(下)
- ArcGIS Server 10.2 发布Oracle11g数据源的 Feature Service
- 网页滚动条显隐设置
- leakcanary——Android 内存泄露检测工具
- LeetCode 453. Minimum Moves to Equal Array Elements 题解(C++)
- Algorithms 绪论
- maven学习笔记--常用插件(plugins)和目标(goals)
- c#获取客户端信息的方法
- ceph中radosgw类图
- codevs 2594 解药还是毒药(状态压缩BFS)
- MySQL中select * for update锁表的范围
- 关于 _cplusplus 的一些说明
- 画线(可以是虚线)
- 程序员最爱的五款专业辅助编程工具
- Adb大全|应用管理