`

Maven学习笔记(二)——常用插件配置详解

 
阅读更多
先将我用到的自定义变量贴过来,防止插件中出现一些变量,大家不理解

 <!-- 全局属性配置 -->
	<properties>
		<project.build.name>tools</project.build.name>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

project.build.name: 用来定义war包名称
project.build.sourceEncoding: 用来定义资源文件的编码格式

下面开始讲解常用的maven插件配置

一、编译插件
   <!-- 编译插件 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.6</source>
					<target>1.6</target>
					<encoding>${project.build.sourceEncoding}</encoding>
				</configuration>
			</plugin>

source:源代码编译版本;
target:目标平台编译版本;
encoding:字符集编码。

二、设置资源文件的编码方式
   <!-- 设置资源文件的编码方式 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-resources-plugin</artifactId>
				<version>2.4.3</version>
				<executions>
					<execution>
						<phase>compile</phase>
					</execution>
				</executions>
				<configuration>
					<encoding>${project.build.sourceEncoding}</encoding>
				</configuration>
			</plugin>

xml、properties文件都是资源文件,编码的时候遇到中文总要进行转码!用什么编码?UTF-8,那就记得强制<encoding>${project.build.sourceEncoding}</encoding>

三、自动拷贝jar包到target目录
   <!-- 依赖插件 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
				<version>2.6</version>
				<executions>
					<execution>
						<id>copy-dependencies</id>
						<phase>compile</phase>
						<goals>
							<goal>copy-dependencies</goal>
						</goals>
						<configuration>
							<!-- ${project.build.directory}为Maven内置变量,缺省为target -->
							<outputDirectory>${project.build.directory}/lib</outputDirectory>
							<!-- 表示是否不包含间接依赖的包 -->
							<excludeTransitive>false</excludeTransitive>
							<!-- 表示复制的jar文件去掉版本信息 -->
							<stripVersion>true</stripVersion>
						</configuration>
					</execution>
				</executions>
			</plugin>


在部署war包时,需要将项目依赖的jar包,也打到war包中,因此就会用到上述插件

四、生成源代码jar包
   <!-- 源代码打包插件 -->
			<plugin>
				<artifactId>maven-source-plugin</artifactId>
				<version>2.1</version>
				<configuration>
					<!-- <finalName>${project.build.name}</finalName> -->
					<attach>true</attach>
					<encoding>${project.build.sourceEncoding}</encoding>
				</configuration>
				<executions>
					<execution>
						<phase>compile</phase>
						<goals>
							<goal>jar</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

该插件主要用于在打jar包时,把源代码也打成jar包

五、将项目打成jar包
   <!-- jar包插件 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>2.4</version>
				<configuration>
					<archive>
						<manifest>
							<!-- 告知 maven-jar-plugin添加一个 Class-Path元素到 MANIFEST.MF文件,以及在Class-Path元素中包括所有依赖项 -->
							<addClasspath>true</addClasspath>
							<!-- 所有的依赖项应该位于 lib文件夹 -->
							<classpathPrefix>lib/</classpathPrefix>
							<!-- 当用户使用 lib命令执行JAR文件时,使用该元素定义将要执行的类名 -->
							<mainClass>com.zhengtian.tools.service.phone.MobilePhoneTool</mainClass>
						</manifest>
					</archive>
				</configuration>
			</plugin>


在将项目打成jar包时,有时会需要将项目打成可以直接运行的jar包,因此就需要将项目依赖的jar包也打入jar包中,此时需要在Eclipse上安装例外一个插件,用来打可执行jar包,详情见链接http://zheng12tian.iteye.com/blog/1765626

六、将项目打成war包
   <!-- war插件 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.1.1</version>
				<configuration>
					<!-- <warName>${project.build.name}</warName> -->
				</configuration>
			</plugin>

encoding:强制字符集编码
warName:war包名字——platform.war
webappDirectory:产生war前,用于存放构建war包的目录——target/platform。
warSourceDirectory:我把web工程搞成了eclipse下的WTP类型。我不喜欢maven产生的webapp目录,更喜欢WebContent!

需要注意的是:
采用上述插件部署项目的话,使用clean package tomcat:redeploy命令。使用该命令前,需要先启动tomcat,实际上是为了让tomcat启动manager项目,实现动态部署

此部署方式虽然也是动态部署的范畴,但是每次修改文件后,需要手动再次重新部署,才会加载更改。

如果想让tomcat自动扫描项目的改动,自动加载,那么需要将maven工程的java全部编译的webapp目录下,然后将jar包和资源文件也打到webapp目录。最后在$CATALINA_HOME/conf /Catalina/localhost中添加一个xml文件,修改docbase为webapp目录。

Tomcat常用的部署方式介绍:http://blog.csdn.net/yangxueyong/article/details/6130065

七、在打包时,需要清空一些指定的目录
   <!-- clean插件 -->
			<plugin>
				<artifactId>maven-clean-plugin</artifactId>
				<version>2.4.1</version>
				<configuration>
					<filesets>
						<fileset>
							<directory>src/main/webapp/WEB-INF/classes</directory>
						</fileset>
						<fileset>
							<directory>src/main/webapp/WEB-INF/lib</directory>
						</fileset>
						<fileset>
							<directory>${project.build.directory}</directory>
						</fileset>
					</filesets>
				</configuration>
			</plugin>


八、利用tomcat-maven-plugin插件将项目自动打包并部署到tomcat中
   <!-- tomcat插件 -->
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>tomcat-maven-plugin</artifactId>
				<configuration>
					<server>tomcat6-manager</server>
					<path>/${project.build.name}</path>
					<url>http://localhost:8080/manager</url>
					<username>admin</username>
					<password>admin</password>
				</configuration>
				<executions>
					<execution>
						<phase>deploy</phase>
						<goals>
							<goal>deploy</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>

path:是指项目部署到tomcat后的项目名称
url:是指tomcat的manager访问地址
server:这个是tomcat服务名称设置,需要配置maven的settings.xml文件,在servers节点中手动配置server,如下所示:
  <server>
			<id>tomcat6-manager</id>
			<username>admin</username>
			<password>admin</password>
		</server>


九、利用cargo-maven2-plugin插件将项目自动打包并部署到tomcat中
<plugin>
				<!-- 指定插件名称及版本号 -->
				<groupId>org.codehaus.cargo</groupId>
				<artifactId>cargo-maven2-plugin</artifactId>
				<version>1.2.3</version>
				<!-- 插件的Tomcat6.x配置 -->
				<configuration>
					<!-- 容器的配置 -->
					<container>
						<!-- 指定服务器版本 -->
						<containerId>tomcat6x</containerId>
						<!-- 指定服务器的安装目录 -->
						<home>E:\Program Files\tomcat-6.0.32</home>
					</container>
					<!-- 具体的配置 -->
					<configuration>
						<!-- 部署模式:existing、standalone等 -->
						<type>existing</type>
						<!-- Tomcat的位置,即catalina.home -->
						<home>E:\Program Files\tomcat-6.0.32</home>
						<!-- 配置属性 -->
						<properties>
							<!-- 管理地址 -->
							<cargo.tomcat.manager.url>http://localhost:8080/manager</cargo.tomcat.manager.url>
							<!-- Tomcat用户名 -->
							<cargo.remote.username>admin</cargo.remote.username>
							<!-- Tomcat密码 -->
							<cargo.remote.password>admin</cargo.remote.password>
							<!-- <cargo.jvmargs> -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8787 </cargo.jvmargs> -->
						</properties>
					</configuration>
				</configuration>
			</plugin>


username和password:是指tomcat的tomcat-users.xml文件中配置的,文件路径为E:\Program Files\tomcat-6.0.32\conf\tomcat-users.xml,如下所示:

  <role rolename="manager"/> 
  <user password="admin" roles="manager" username="admin"/> 


十、有时候插件检查不通过,需要人为的忽略对有些插件的检查
  <!-- 插件管理 -->
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.eclipse.m2e</groupId>
					<artifactId>lifecycle-mapping</artifactId>
					<version>1.0.0</version>
					<configuration>
						<lifecycleMappingMetadata>
							<pluginExecutions>
								<!-- 忽略2.0以上版本的maven-dependency-plugin的检查 -->
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>org.apache.maven.plugins</groupId>
										<artifactId>maven-dependency-plugin</artifactId>
										<versionRange>[2.0,)</versionRange>
										<goals>
											<goal>copy-dependencies</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<ignore />
									</action>
								</pluginExecution>
							</pluginExecutions>
						</lifecycleMappingMetadata>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>


目前用到的常用配置就是这些,还有些没用过的,有的网友总结的很好,链接如下:http://snowolf.iteye.com/blog/953735
分享到:
评论
2 楼 zheng12tian 2013-06-20  
leopanhang 写道
<!-- 表示复制的jar文件去掉版本信息 --> 
<stripVersion>false</stripVersion>

这里应该为 true 才能去掉版本号。


多谢兄弟提醒,
1 楼 leopanhang 2013-06-19  
<!-- 表示复制的jar文件去掉版本信息 --> 
<stripVersion>false</stripVersion>

这里应该为 true 才能去掉版本号。

相关推荐

    maven学习笔记maven学习笔记

    maven学习笔记maven学习笔记maven学习笔记

    Maven学习笔记.zip

    本学习笔记将深入探讨Maven的核心概念,包括Maven插件、安装步骤、中央仓库以及自定义本地仓库的设置。 ### Maven核心概念 1. **项目对象模型(POM)**:POM是Maven的核心,它包含了项目的基本信息,如项目名称、...

    maven学习笔记01(基础入门)

    ** Maven基础入门 ** Maven是一个Java项目管理工具,它主要负责构建、依赖管理和项目信息管理。...在`maven_study_01`的学习笔记中,你可以找到更多关于Maven的基础知识和实践案例,帮助你快速上手并掌握这一工具。

    maven settings配置详解

    maven的setting配置文件详解。。。。

    maven学习笔记整理

    maven学习笔记整理

    尚硅谷Maven课程笔记代码资源

    【尚硅谷Maven课程笔记代码资源】是一份全面学习Maven的资料集合,它涵盖了从基础到高级的各种知识点,旨在帮助开发者深入理解并熟练运用Maven进行自动化构建。该资源包含课件、源码和相关的笔记,使得学习过程更加...

    Maven 教程:基础篇-尚硅谷学习笔记 2022年

    **Maven教程:基础篇——尚硅谷学习笔记 2022年** Maven是一个强大的Java项目管理和构建工具,由Apache软件基金会开发。它通过提供一个标准的项目对象模型(Project Object Model,POM)来简化项目的构建过程,并...

    培训机构传出的maven学习笔记

    了解如何配置和使用各种常用插件,如maven-surefire-plugin(用于单元测试)和maven-jar-plugin(用于打包成JAR)。 7. **多模块项目**:在大型项目中,理解如何组织和管理多个相互依赖的子项目,以及如何通过聚合...

    maven学习笔记1

    通常,学习Maven时,你需要了解如何编写pom.xml文件、理解生命周期和构建阶段、以及如何配置Maven插件。 **三、安装Maven** 1. 在Linux(Ubuntu)环境下,首先移除旧版Maven(如果有): ``` sudo apt-get remove...

    maven学习笔记.rar

    ** Maven学习笔记详解 ** Maven,作为Java项目管理和构建工具,是开发人员不可或缺的利器。它通过使用一种标准化的项目对象模型(Project Object Model,POM)来管理项目的依赖关系,构建过程以及配置信息。Maven...

    mybatis_maven学习笔记

    【mybatis_maven学习笔记】 在Java开发领域,MyBatis和Maven是两个不可或缺的工具,它们分别在数据访问层和项目构建方面扮演着重要角色。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,...

    maven项目学习笔记记录

    **Maven项目学习笔记记录** 在软件开发领域,Maven是一个强大的项目管理和构建工具,尤其在Java开发中广泛使用。本笔记将深入探讨Maven的核心概念、主要功能以及实际应用场景,帮助你更好地理解和掌握这一重要工具...

    Maven学习必要插件

    在本文中,我们将深入探讨Maven的核心功能、常用插件以及如何配置和使用这些插件。 1. **Maven核心功能** Maven通过Project Object Model (POM)来描述项目,POM是一个XML文件,包含了项目的配置信息,如依赖、构建...

    个人Maven学习笔记

    ### 个人Maven学习笔记 #### 为什么使用Maven? 在软件开发过程中,尤其是在使用Java进行后端开发时,项目通常会依赖大量的第三方库或框架。如果没有统一的管理工具,这些依赖很容易出现版本冲突的问题,增加了...

    黑马maven笔记,第一天

    ### 黑马Maven笔记详解 #### Maven简介与特点 Maven是一款强大的项目管理和构建工具,作为Apache基金会下的一个开源项目,它完全采用Java语言编写,主要用于管理Java项目。Maven通过标准化项目构建过程和依赖管理...

    201205_Maven学习笔记1.rar

    【标题】:“201205_Maven学习笔记1.rar”揭示了关于Maven的深入学习内容,这个压缩包包含了一系列文档,旨在帮助开发者更好地理解和应用Maven这一强大的Java项目管理和构建工具。 【描述】:尽管描述部分是空的,...

    maven学习笔记,快速入门maven

    内容概要:maven学习笔记,适合刚接触maven的人能让你快速入门。 适用人群:大学生或者初基础maven的人 使用场景及目标:idea集成maven,用来下载依赖包

    Maven 学习笔记.docx

    【Maven学习笔记】 Maven是一个强大的项目管理和构建工具,主要应用于Java开发领域。它能够自动管理项目的依赖关系,帮助开发者解决因jar包版本冲突、依赖管理混乱等问题带来的困扰。Maven通过制定一套规范化的项目...

Global site tag (gtag.js) - Google Analytics