常用插件及其用法位于:http://maven.apache.org/plugins/
1. Jetty server plugin
2. Dependency copy plugin
3. Surefire Test plugin
4. Uber jar plugin
5. Maven Source Plugin
1. Jetty Plugin
<plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>8.1.14.v20131031</version> <configuration> <scanIntervalSeconds>3</scanIntervalSeconds> <connectors> <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> <port>8089</port> <maxIdleTime>60000</maxIdleTime> </connector> </connectors> </configuration> </plugin>
功能:为web项目添加一个内置的web服务器,通过这个插件,在plugins目录下会有一个jetty插件项
2. Copy Plugin
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy</id> <phase>install</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory> ${project.build.directory}/flume.kafka.dependencies </outputDirectory> </configuration> </execution> </executions> </plugin>
将添加了这个plugin的maven模块,在做install操作时将该模块依赖的jar包全部copy到指定目录下
3. Surefire Test Plugin
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <useSystemClassLoader>false</useSystemClassLoader> <skipTests>true</skipTests> </configuration> </plugin>
用于运行单元测试,在该模块下会添加一个插件,
4. Uber Jar Plugin
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>2.3</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> </execution> </executions> </plugin>
依赖属性为provided的Dependency不会打到uber jar中
4. Maven Source Plugin
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin>
XX. maven-compiler-plugin
对模块按照指定的JDK版本进行编译:
<plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.6</source> <target>1.6</target> <encoding>UTF8</encoding> </configuration> </plugin>
1.maven-compiler-plugin
参考:http://maven.apache.org/plugins/maven-compiler-plugin/
在多人项目中,比较好的开发实践是项目本身指定JDK的版本,而不是项目组中的每个成员自己来指定。每个人使用的JDK版本不一致,导致代码的编译问题时有发生。
Maven中,可以使用maven-compiler-plugin来指定项目的jdk版本,
在用户管理这个web应用中,有一个聚合和父模块user-project和三个功能模块
user-project
user-core
user-service
user-web
我们可以为每个模块添加maven-compiler-plugin的版本控制,但是这样一来,重复代码甚多,如果要更改JDK的版本,每个功能模块的pom.xml都要修改一次,更合理的做法是在父模块user-project中进行定义,功能模块继承它,这类似于依赖的继承,在user-project的pom中添加如下代码:
<build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <!--指定代码1.6版本兼容-> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </plugins> </pluginManagement> </build>
在user-core,user-service和user-web中,分别做如下定义以继承user-project的maven-compiler-plugin的配置
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> </plugin>
问题:
做如上定义后,在user-core中使用JDK7的类,如ForkJoinPool,没有编译错,编译能成功,这是为什么??
2.maven-rar-plugin
对指定的目录打rar包,参考http://maven.apache.org/plugins/maven-rar-plugin/
3. 编译时跳过module下的测试代码的测试
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.12.4</version> <configuration> <skip>true</skip> </configuration> </plugin>
4.打成jar包时,指定mainClass
<plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <mainClass>sparkStreaming.NetworkWordCount</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin>
5.将一个Maven模块,连同它依赖的jar打包成Uber Jar
<!-- Maven shade plug-in that creates uber JARs --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>2.3</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> </execution> </executions> </plugin>
相关推荐
**Maven学习笔记** 在Java开发领域,Maven是一个不可或缺的构建工具,它极大地简化了项目的构建、管理和依赖管理过程。Maven通过使用一个项目对象模型(Project Object Model,POM),XML格式的配置文件,定义了...
** Maven基础入门 ** Maven是一个Java项目管理工具,它主要负责构建、依赖管理和项目信息管理。...在`maven_study_01`的学习笔记中,你可以找到更多关于Maven的基础知识和实践案例,帮助你快速上手并掌握这一工具。
**Maven学习笔记** 在Java开发领域,Maven是一个不可或缺的构建工具,它极大地简化了项目的构建、管理和依赖管理过程。Maven通过一个统一的项目对象模型(Project Object Model,POM),使得开发者可以轻松地定义...
【尚硅谷Maven课程笔记代码资源】是一份全面学习Maven的资料集合,它涵盖了从基础到高级的各种知识点,旨在帮助开发者深入理解并熟练运用Maven进行自动化构建。该资源包含课件、源码和相关的笔记,使得学习过程更加...
在“培训机构传出的maven学习笔记”中,我们可能涵盖以下几个关键知识点: 1. **Maven的基本概念**:理解Maven的核心概念,如POM.xml文件、仓库(本地仓库和中央仓库)、生命周期和构建阶段(如clean、compile、...
【mybatis_maven学习笔记】 在Java开发领域,MyBatis和Maven是两个不可或缺的工具,它们分别在数据访问层和项目构建方面扮演着重要角色。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,...
**Maven教程:基础篇——尚硅谷学习笔记 2022年** Maven是一个强大的Java项目管理和构建工具,由Apache软件基金会开发。它通过提供一个标准的项目对象模型(Project Object Model,POM)来简化项目的构建过程,并...
** Maven学习笔记详解 ** Maven,作为Java项目管理和构建工具,是开发人员不可或缺的利器。它通过使用一种标准化的项目对象模型(Project Object Model,POM)来管理项目的依赖关系,构建过程以及配置信息。Maven...
【Maven学习笔记1】 Maven是一个强大的Java项目管理和构建工具,它可以帮助开发者管理项目的依赖、构建过程、项目信息和报告。本笔记主要涵盖了Maven的基础知识,包括资料收集、安装指南,特别是针对Linux环境下的...
最新maven视频教程加源码笔记,内容完整有保证,是学习maven的不可多得的教程。
**Maven项目学习笔记记录** 在软件开发领域,Maven是一个强大的项目管理和构建工具,尤其在Java开发中广泛使用。本笔记将深入探讨Maven的核心概念、主要功能以及实际应用场景,帮助你更好地理解和掌握这一重要工具...
### 个人Maven学习笔记 #### 为什么使用Maven? 在软件开发过程中,尤其是在使用Java进行后端开发时,项目通常会依赖大量的第三方库或框架。如果没有统一的管理工具,这些依赖很容易出现版本冲突的问题,增加了...
**Maven学习笔记** Maven是一个强大的Java项目管理和构建工具,它简化了项目的构建、依赖管理和文档生成。本文档基于尚硅谷的视频教程,旨在帮助读者深入理解Maven的核心概念和使用方法。 **1. 为什么学习Maven** ...
【Maven学习笔记】 Maven是一个强大的项目管理和构建工具,主要应用于Java开发领域。它能够自动管理项目的依赖关系,帮助开发者解决因jar包版本冲突、依赖管理混乱等问题带来的困扰。Maven通过制定一套规范化的项目...
常见的Maven插件有Surefire Plugin用于运行单元测试,Failsafe Plugin负责集成测试,JAR Plugin用于打包Java应用,WAR Plugin则适用于Web应用的构建。书中会涵盖如何配置和使用这些插件,以满足不同项目需求。 除此...
【标题】:“201205_Maven学习笔记1.rar”揭示了关于Maven的深入学习内容,这个压缩包包含了一系列文档,旨在帮助开发者更好地理解和应用Maven这一强大的Java项目管理和构建工具。 【描述】:尽管描述部分是空的,...
** Maven学习资源整理** 在Java开发领域,Maven是一个不可或缺的构建工具,它极大地简化了项目的构建、管理和依赖管理过程。本资源包是为初学者和有经验的开发者准备的一系列Maven学习资料,旨在帮助你更好地理解和...
【标题】"201205_Maven学习笔记3.rar"所涵盖的知识点主要集中在Maven的使用和集成上,这是一个关于Maven的详细学习资料压缩包,包含多个文档,帮助用户理解并掌握Maven在实际开发中的应用。Maven是一个强大的Java...