`
schy_hqh
  • 浏览: 558271 次
  • 性别: 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/ 

 

 

 

分享到:
评论

相关推荐

    maven 安装包 和 eclipse 插件

    你可以创建新的Maven项目,使用Eclipse的构建生命周期进行编译、测试、打包等操作,同时通过`pom.xml`文件管理项目依赖。Maven的强大在于它的依赖管理和构建自动化,它能够根据`pom.xml`自动下载所需库,构建项目,...

    maven3.1、maven3.2安装包、源码及eclipse整合插件

    Maven是Java开发中的一款强大的构建工具,它管理项目依赖、构建生命周期和工件发布。这里我们关注的是Maven 3.1和3.2版本的安装包和源码,以及如何将Maven与Eclipse集成的插件。下面将详细介绍这些内容。 1. Maven ...

    maven最新手动安装插件下载

    在IT行业中,Maven是一个非常重要的构建工具,主要用于管理Java项目...使用M2Eclipse,你可以享受到Maven带来的便捷,例如自动下载依赖、构建生命周期的可视化、以及对POM.xml文件的智能感知等功能,大大提高开发效率。

    maven3+myeclipse插件

    2. **构建生命周期**:Maven定义了一套标准的构建生命周期,包括编译、测试、打包、验证、部署等阶段,开发者可以通过简单的命令执行这些阶段。 3. **插件系统**:Maven拥有丰富的插件库,可以扩展Maven的功能,如...

    eclipse maven3 离线插件

    在Eclipse中集成Maven插件可以方便地进行项目的构建、依赖管理和生命周期操作。 首先,让我们了解一下Maven的基本概念。Maven使用一种基于XML的配置文件(pom.xml)来定义项目构建和依赖关系。POM(Project Object ...

    maven eclipse 离线插件

    【标题】"maven eclipse ...你可以创建新的Maven项目,管理依赖,执行构建操作,以及利用Maven的各种生命周期阶段和插件功能,提高你的开发效率。记住,定期更新Maven插件以获取最新的功能和修复,即使是在离线环境下。

    Myeclipse maven插件下载

    Maven通过一个项目对象模型(Project Object Model,POM),依赖管理和标准化的构建生命周期来简化项目构建、报告和文档的生成。通过在POM中定义项目依赖,Maven可以自动下载所需的库,并构建项目。 2. MyEclipse...

    eclipse的maven插件

    3. **构建和清理**:通过右键点击项目,选择“Run As” -&gt; “Maven Build”,可以执行Maven的各种生命周期目标,如编译(compile)、测试(test)、打包(package)、安装(install)和部署(deploy)。同时,也可以...

    maven及eclipse插件下载和详细环境搭建步骤

    6. **构建与调试**:在Eclipse中,Maven插件会自动管理项目的生命周期和构建过程。你可以右键点击项目,选择“Run As” -&gt; “Maven Build”来执行特定的Maven目标,如`install`或`clean`。同时,Eclipse还提供了调试...

    RAD中集成Maven的M2Eclipse插件包及教程

    在开发过程中,你可能需要添加或删除依赖,或者执行Maven的生命周期目标,如"compile"、"install"或"clean"。M2Eclipse提供了直观的图形界面,可以直接在项目上右键选择"Maven" -&gt; "Run As" -&gt; "Maven Build..."来...

    eclipse maven插件

    - 在项目右键菜单中,有"Maven"选项,提供了对Maven生命周期的全部操作,如clean、compile、test、install和deploy等。 - 用户还可以自定义构建配置,通过Run Configurations对话框创建Maven构建运行配置。 4. **...

    eclipse安装maven插件

    Eclipse的Maven插件会自动解析POM文件,并在项目中提供相关功能,如代码补全、构建生命周期管理等。 9. **使用Maven命令**:在Eclipse的Package Explorer视图中,右键点击Maven项目,选择“Run As” -&gt; “Maven ...

    maven的myeclipse插件

    总结来说,将Maven集成到MyEclipse中,主要依赖于m2eclipse插件,通过它,开发者能够在MyEclipse的友好环境中享受到Maven的强大功能,如自动管理依赖、构建生命周期等,极大地提高了开发效率。对于初学者,理解Maven...

    maven eclipse 插件下载

    此外,m2e还能帮助我们自动下载项目依赖、管理POM.xml配置文件,以及提供与Maven生命周期的无缝集成。 描述中提到的"m2Subclipse"可能是指"m2e Subclipse",这是一个扩展插件,它结合了m2e和Subclipse,后者是...

    Eclipse MAVEN离线插件

    Maven是一个强大的项目管理和构建工具,广泛用于Java应用的开发,它通过管理项目的依赖关系、构建流程以及生命周期,帮助开发者高效地构建和维护项目。 离线安装Eclipse Maven插件的过程主要包括以下步骤: 1. **...

    maven与Eclipse集成插件

    3. **构建与调试**:使用Maven插件,可以执行如`clean`, `install`, `compile`, `test`等Maven生命周期命令,Eclipse会显示构建进度和结果。同时,也可以直接运行单元测试,进行调试。 4. **依赖管理**:Maven自动...

    maven3的eclipse插件

    - 管理生命周期:通过Eclipse的构建菜单,可以触发Maven的生命周期阶段,如清理、打包、安装和部署。 - 集成POM编辑器:提供POM.xml文件的智能感知和错误检查。 - 缓存同步:Eclipse会与Maven的本地仓库保持同步,...

    maven的Eclispe插件

    Maven是Java开发中的一款强大的构建工具,它简化了项目的构建、依赖管理和生命周期过程。Eclipse作为流行的Java集成开发环境(IDE),与Maven的结合使得开发者可以在Eclipse中方便地进行Maven项目管理。本文将详细...

    maven3+eclipse插件(含图形编辑pom插件)

    - **构建生命周期**:Maven 提供了一套预定义的生命周期,包括清理、编译、测试、打包、集成测试、验证、部署等阶段。 - **插件系统**:Maven 使用插件来执行特定的任务,如编译、测试、打包、部署等,用户可以...

Global site tag (gtag.js) - Google Analytics