`

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 才能去掉版本号。

相关推荐

Global site tag (gtag.js) - Google Analytics