zoukankan      html  css  js  c++  java
  • maven生命周期与插件

    本文主要是针对《maven实战》书中关键知识点的学习记录,未免有纰漏或描述不到之处,建议购买阅读原书

    Maven生命周期

    maven拥有3套完全独立的周期,而并不是全都都是一起的(我当初就是这么以为...)
    三个独立的周期是clean、default和site,每个周期中,有不同的阶段(phrase),经常在一些插件的配置里可以看见,下面是对每个生命周期的简单介绍。

    clean

    • pre-clean 执行清理前需要完成的工作
    • clean 正式开始清理
    • post-clean 执行清理后的工作

    default

    default是maven生命周期中最复杂的,包含许多的部分,仅对其中一些重要的部分说明

    • validate
    • initialize
    • generate-sources
    • process-sources 处理项目的资源文件,一般来说是 src/main/resources目录的内容进行变量的替换
    • generate-resources
    • process-resources
    • compile 编译主项目的源代码
    • process-classes
    • generate-test-process
    • process-test-classes
    • generate-test-resources
    • process-test-resources
    • test-compile 编译项目测试代码src/test/java
    • process-test-classes
    • test
    • prepare-package
    • package
    • pre-integration-test
    • integration-test
    • post-integration-test
    • verify
    • install 将安装包存放到本地的maven库中
    • deploy 将最终的包复制到远程仓库,提供给他人使用

    site

    • pre-site
    • site 生成项目站点文档
    • post-site
    • site-deploy 将生成的项目暂定,发布到服务器上去

    命令与对应周期

    • mvn clean 对应clean周期的全部
    • mvn clean install 对应clean的全部周期,以及default中到install的部分
    • mvn clean deploy site-deploy 对应clean全部,default全部以及site的全部

    插件与绑定

    插件目标

    插件目标(goal),更像是插件自己内部定义的一些时期,或者说是功能模块。maven核心仅仅定义了抽象的生命周期,具体任务是交由插件完成的,插件按独立的形式存在
    例如maven-dependency-plugin,它能够对项目进行依赖分析,输出依赖树,输出已解析的依赖等等。这3个功能就使用到了analyze, tree, list 3个目标

    插件绑定

    maven生命周期与插件互相绑定,更具体的是,生命周期与插件目标的相互绑定。例如default中的compile这一阶段,对应了maven-compiler-plugin插件的compile.

    内置绑定

    为了在使用中不用任何配置就可以构建Maven项目,maven在核心为一些主要生命周期绑定了很多插件的目标
    例如在clean周期中的clean,绑定的是maven-clean-plugin:clean;
    site周期中的site是,maven-site-plugin:site;site-deploy绑定 maven-site-plugin:deploy
    至于default的,这比较的多,这个可以参考官网上的解释

    自定义绑定

    除了内置的绑定意外,用户还可以选择将某个插件目标绑定到生命周期的某个阶段上。比较常见的是如下这种代码配置

    <build>
    	<plugins>
    		<plugin>
    			<groupId>org.apache.maven.plugins</groupId>
    			<artifactId>maven-source-plugin</artifactId>
    			<version>2.1.1</version>
    			<executions>
    				<execution>
    					<id>attach-sources</id>
    					<phase>verify</phase>
    					<goals>
    						<goal>jar-no-fork</goal>
    					</goals>
    				</execution>
    			</executions>
    		</plugin>
    	</plugins>
    </build>
    

    上面的声明中,除了基本的坐标声明外,还有插件的执行配置。其中一个id为attach-source的执行任务,将插件绑定到default的verify的生命周期上,通过goals配置要指定的执行的插件目标。

    有的插件及时不配置phase,插件目标也能绑定到生命周期中去,这是因为插件内部有默认的phase。

    插件配置

    经常使用的 mvn clean install -Dmaven.test.skip=true中的-D后面的一串,就是插件的配置,一般都是支持命令行与pom中配置参数的。但注意,并不是所有的插件都支持命令行配置参数,因此有的时候,需要再pom文件中进行配置了,下面这段也是很常见的一个pom中插件的配置

    <build>
    	<plugins>
    		<plugin>
    			<groupId>org.apache.maven.plugins</gourpId>
    			<artifactId>maven-compiler-plugin</artifactId>
    			<version>2.1</version>
    			<configuration>
    				<source>1.5</source>
    				<target>1.5</target>
    			</configuration>
    		</plugin>
    	</plugins>
    </build>
    

    除了向上面这种用的多的源码的输入输出,还有一种是任务的配置,类似如下

    			<configuration>
    				<tasks>
    					<echo>doing ...</echo>
    				</tasks>
    			</configuration>
    
  • 相关阅读:
    Android中文API合集(6) + 开发者指南合集(1) (chm格式)
    Android中文API(131) —— GpsStatus
    Android开发指南(31) —— Multimedia and Camera JetPlayer
    Android 中文 SDK —— ADT 14.0.0 (ADT14插件更新说明)
    Android开发者指南(26) —— Resource Types Layout
    Android开发指南(33) —— Multimedia and Camera Camera
    使用Apache FtpServer搭建FTP服务器 [FlashFXP]
    [Android]ViewSwitcher使用范例
    Android中文API(136) —— Bitmap
    Android 4.0 开发者指南(28) —— Resource Types More Types
  • 原文地址:https://www.cnblogs.com/westlin/p/10988145.html
Copyright © 2011-2022 走看看