`
schy_hqh
  • 浏览: 543101 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Maven的生命周期和插件(NEW)

 
阅读更多
 
不同版本的插件,功能有可能不同,有些配置在某些版本中根本就永不了,所以使用插件的时候注意点!

生命周期
运行一个命令,要进过哪些步骤。
如,执行mvn test命令,会先执行compile,再执行test,这就是一个生命周期。
一个生命周期中,包含若干个阶段
每个阶段都对应一个插件(plugin)
每个插件又有若干个目标,将根据具体环境决定执行哪个目标(goal)。
 
 比如,执行 mvn test命令
 生命周期将经过如下几个阶段:
资源拷贝
maven-resources-plugin:2.6:resources (default-resources)
编译java源代码
maven-compiler-plugin:2.5.1:compile (default-compile)
测试资源拷贝
maven-resources-plugin:2.6:testResources (default-testResources)
测试代码编译
maven-compiler-plugin:2.5.1:testCompile (default-testCompile)
测试
maven-surefire-plugin:2.12.4:test (default-test)
可以看到,上面的maven-resources-plugin和maven-compiler-plugin插件都执行了2次,但是每次执行的目标都不相同,这就是插件与它的目标!
 
插 件
Maven中所有的命令都是通过执行插件来完成的
插件具有不同的目标 (goal)
goal:
Java源代码的编译和测试代码的编译功能很类似,都是调用Java编译器进行,将功能类似的代码开发为一个插件,通过不同的目标goal来区分它们!
 
========================================================================= 
一个生命周期 Life Circle
经过若干个阶段 Phase
每个阶段执行不同的插件 Plugin
每个插件具有不同的目标 Goal
每个目标对应一个具体的任务 Task 
Maven中有3套不同的生命周期,它们之间是相互独立的,互不影响。
这三套生命周期分别是:
  • Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
  • Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。
  • Site Lifecycle 生成项目报告,站点,发布站点。

Clean生命周期:

  • pre-clean 执行一些需要在clean之前完成的工作
  • clean 移除所有上一次构建生成的文件
  • post-clean 执行一些需要在clean之后立刻完成的工作

mvn clean中的clean就是上面的clean,在一个生命周期中,运行某个阶段的时候,它之前的所有阶段都会被运行,也就是说,mvn clean等同于 mvn pre-clean clean,如果我们运行 mvn post-clean,那么 pre-clean,clean 都会被运行。这是Maven很重要的一个规则,可以大大简化命令行的输入。

 

Site生命周期

  • pre-site 执行一些需要在生成站点文档之前完成的工作
  • site 生成项目的站点文档
  • post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
  • site-deploy 将生成的站点文档部署到特定的服务器上

经常用到的是site阶段和site-deploy阶段,用以生成和发布Maven站点,这可是Maven相当强大的功能,Manager比较喜欢,文档及统计数据自动生成。

 

Default生命周期,最重要的,绝大部分工作都发生在这个生命周期中,重要和常用的阶段:

  • validate
  • generate-sources
  • process-sources
  • generate-resources
  • process-resources 复制并处理资源文件,至目标目录,准备打包。
  • compile 编译项目的源代码。
  • process-classes
  • generate-test-sources
  • process-test-sources
  • generate-test-resources
  • process-test-resources 复制并处理资源文件,至目标测试目录。
  • test-compile 编译测试源代码。
  • process-test-classes
  • test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
  • prepare-package
  • package 接受编译好的代码,打包成可发布的格式,如 JAR 。
  • pre-integration-test
  • integration-test
  • post-integration-test
  • verify
  • install 将包安装至本地仓库,以让其它项目依赖。
  • deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。

记住,运行任何一个阶段的时候,它前面的所有阶段都会被运行,这也就是为什么我们运行mvn install的时候,代码会被编译,测试,打包。

 

此外,Maven的插件机制是完全依赖Maven的生命周期的。

 

 

==================================================================

 

插件的使用

 

下载插件:http://maven.apache.org/plugins/index.html

 

 

插件命令:source:jar-no-fork

作用:生成项目的源码jar包,只包含源代码,便于携带拷贝学习。

如,下面的配置,将对每个模块,单独生成一个src源码jar包。

在pom中对插件进行配置,如果在parent模块中进行插件的配置,子模块将继承该插件的所有配置

当前,子模块也可以自己定义插件覆盖parent中的配置。

<project>
	...

<!-- 插件 -->
	<build>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-source-plugin</artifactId>
					<version>2.2.1</version>
					<executions>
						<execution>
							<!-- 指定在package阶段后执行该插件 -->
							<phase>package</phase>
							<!-- 指定执行该插件的jar-no-fork目标 -->
							<goals>
								<goal>jar-no-fork</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>

	...
</project>

 

子模块中引用插件

<project>
	...

<!-- 插件 -->
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
                                <!-- 该插件的其它配置将从parent中继承下来 -->
			</plugin>
		</plugins>
	</build>

	...
</project>

 

 

插件命令:war:war

作用:打war包时可能会用到

<!-- war包的插件 -->
<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-war-plugin</artifactId>
	<version>2.4</version>
	<configuration>
		<!-- 指定生成的war包的名称,该名称不会影响发布的项目的访问路径 -->
		<warName>user</warName>
	</configuration>
</plugin>

 

 

 

插件命令:rar:rar

作用:打包为rar格式的包

不管includeJar为true或false,生成的rar包中的内容都一样,是哪儿没用对?

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-rar-plugin</artifactId>
	<version>2.3</version>
	<!--configuration标签用来配置插件的一些属性参数  -->
	<configuration>
		<!-- 是否包含本模块生成的jar包,这里设置true和false没区别,都把jar包塞rar包里了,很郁闷!!! -->
		<includeJar>false</includeJar>
	</configuration>
	<executions>
		<execution>
			<phase>package</phase>
			<goals><goal>rar</goal></goals>
		</execution>
	</executions>
</plugin>

 

 

 

 Rapid Testing Using the Jetty Plugin

 

Normally, testing a web application involves compiling Java sources, creating a WAR and deploying it to a web container.

Using the Jetty Plugin enables you to quickly test your web application by skipping the last two steps. By default the Jetty Plugin scans target/classes for any changes in your Java sources and src/main/webapp for changes to your web sources. The Jetty Plugin will automatically reload the modified classes and web sources.

To use the Jetty Plugin just add the following in your pom.xml:

 

<!-- jetty插件 -->
<plugin>
	<groupId>org.mortbay.jetty</groupId>
	<artifactId>jetty-maven-plugin</artifactId>
	<version>7.1.6.v20100715</version>
	<configuration>
		<!-- 扫描周期 -->
		<scanIntervalSeconds>3</scanIntervalSeconds>
		<!-- 指定项目发布的上下文 -->
		<webAppConfig>
			<contextPath>/test</contextPath>
		</webAppConfig>
		<connectors>
			<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
				<!-- 指定服务监听的端口 -->
				<port>80</port>
				<maxIdleTime>60000</maxIdleTime>
			</connector>
		</connectors>
	</configuration>
</plugin>

 访问jetty发布的服务,80端口可以省略,项目根路径指定为了test,所以:

http://localhost:80/user-web/   --->   http://localhost/test/ 

 

 

 

分享到:
评论

相关推荐

    Maven3实战笔记04Maven的生命周期和插件

    Maven3实战笔记04——Maven的生命周期和插件。

    关于 maven生命周期 最新 最全

    Maven生命周期 最新版 最全 最好用

    Maven的生命周期和插件

    NULL 博文链接:https://576017120.iteye.com/blog/1468915

    大话Maven生命周期

    Maven非常强大的重要原因是它有十分完善的生命周期模型 lifecycle 这个生命周期可以从两方面来理解 第一 顾名思义 运行Maven的每个步骤都由它来定义的 这种预定义的默认行为使得我们使用Maven变得简单 相比而言 Ant...

    Maven 生命周期.pdf

    附件详细的阐述了Maven中生命周期概念的理解,对于在开发过程中熟练的使用Maven大有脾益

    maven生命周期

    Maven有三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,初学者容易将Maven的生命周期看成一个整体,其实不然。

    java Maven中常用命令和插件

    java Maven中常用命令和插件java Maven中常用命令和插件java Maven中常用命令和插件java Maven中常用命令和插件java Maven中常用命令和插件java Maven中常用命令和插件java Maven中常用命令和插件java Maven中常用...

    Maven生命周期和及插件原理用法详解

    主要介绍了Maven生命周期和及插件原理用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值的相关资料

    maven 安装包 和 eclipse 插件

    maven 安装包 和 eclipse 插件 apache-maven-3.1.0-bin.zip eclipse-maven3-plugin.7z,安装说明 请见 我的bolg

    Eclipse Maven插件,SVN插件

    包含了企业常用SVN插件,Maven插件等

    MAVEN包和插件

    MAVEN的包和插件,方便大家下载使用,不用再找资源

    maven插件的eclipse插件

    maven插件的eclipse插件

    maven2 的eclipse插件

    maven2的eclipse插件 ...而【maven2】里面d 目录结构就是【安装方法&gt;maven2\eclipse\解压缩插件包得来的plugins和features文件夹】。 【安装方法&gt;maven2\解压缩插件包得来的plugins和features文件夹】。

    maven离线安装插件

    4、在links中新建maven.txt文件,内容为插件地址,例如:path=D:\eclipse_gzds\myplugins\maven(注意这里斜杠,不是反斜杠) 5、将maven.txt扩展名改为maven.lin 6、在eclipse根目录下找到eclipse.ini并打开,在...

    maven3+myeclipse插件

    maven3+myeclipse插件 需要使用的jdk版本1.7

    Maven和Tomcat插件

    创建Maven项目所需的插件,及打包Maven项目(源码包,全量包)的pom文件,下载Tomcat的pom文件

    maven插件和eclipse集成

    maven跟eclipse插件集成. 1,打开你本地的eclipse根目录,随便新建一个文件夹例如mavenPlugin,把maven离线插件包中两个文件夹复制到这个新建的这个文件夹里边. 2,找到eclipse根目录下的dropins文件夹,进去后,新建...

    apache-maven-3.2.1 maven插件 免费下载

    apache-maven-3.2.1 maven插件 免费下载 亲测可用 实用

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

    Maven使用tomcat8-maven-plugin插件

Global site tag (gtag.js) - Google Analytics