maven生命周期

pom记录了一个maven项目的定义:项目包含什么?需要怎样的打包类型?是否包含一个父项目?它的依赖是什么?maven针对这些对象是怎么操作的呢?maven将这些操作绑定到一个目标阶段,这些目标阶段共同构成了maven的生命周期。如prepare-resource,compile,package、install等,maven中有三种标准的生命周期:clean、default、site

1.clean

mvn clean:celan删除构建目录,即删除target的构建输出

2.default

主要有以下阶段

 

生命周期阶段描述
validate验证项目是否正确,以及所有为了完整构建必要的信息是否可用
generate-sources生成所有需要包含在编译过程中的源代码
process-sources处理源代码,比如过滤一些值
generate-resources生成所有需要包含在打包过程中的资源文件
process-resources复制并处理资源文件至目标目录,准备打包
compile编译项目的源代码
process-classes处理编译生成的文件,例如对java类进行字节码增强
generate-test-sources生成所有需要包含在测试编译过程中的源代码
process-test-sources处理测试源代码,比如过滤一些值
generate-test-resources生成测试需要的资源文件
process-test-resources复制并处理测试资源文件至测试目标目录
test-compile编译测试源代码
test使用合适的单元测试框架啊运行测试,这些测试应该不需要代码被打包或发布
prepare-package在真正的打包之前,执行一些准备打包必要的操作
package将编译好的代码打包成可分发的格式,如jar、war、pom
pre-integration-test执行一些在集成测试运行之前需要的动作
integration-test如果有比哟的话,处理并发布至集成测试可以运行的环境
post-integration-test执行一些在集成测试运行之后需要的动作
verify执行所有检查,验证包是有效的,符合规范
install安装包至本地仓库,以备本地的其他项目作为依赖使用
deploy复制最终的包至远程仓库,分享给其他的开发人员和项目

2.1 process-resources

复制资源文件至输出目录,应用过滤器,替换掉一些符号,如

 

<service>

    <url>${jdbc.url}</url>

    <user>${jdbc.username}</user>

</service>

这些自定义变量在一个属性文件default.properties中的定义

 

jdbc.url=jdbc:hsqldb:mem:mydb

jdbc.username=sa

要配置实用该default.properties文件的资源过滤,在pom文件中我们要制定filters元素中的属性文件列表以及一个标记告诉maven资源目录需要过滤。默认的maven行为会跳过过滤。只是将资源复制到输出目录。pom文件配置如下

 

<bulid>

    <filters>

         <filter>src/main/filters/default.properties</filter>

    </filters>

    <resource>

        <directory>src/main/resources</directory>

        <filtering>true</filtering>

    </resource>

</build>

 

复制资源文件至输出目录,输出目录并非一定要在src/main/resources中,我们可以自己配置额外的资源目录,如:

 

<resources>

     <resource>

        <directory>src/main/resources</directory>

     </resource>

    <resource>

        <directory>src/main/xml</directory>

     </resource>

    <resource>

        <directory>src/main/image</directory>

     </resource>

…………

</resources>

 

2.2compile

如果没有自定义pom中的值,mvn compile:compile将会编译src/main/java中的所有内容至target/classes中,compiler插件调用javac

2.3package

将编译好的代码打包成可分发的格式,可以打包的类型有jar包、war包、pom包等,默认为jrp包,要打什么包类型,可以在pom文件中配置

 

<groupId>com.tmall.jst</groupId>
 <artifactId>jrp</artifactId>
 <version>2.1.0-SNAPSHOT</version>
 <packaging>pom</packaging>

 <packaging>pom</packaging>显示配置打包类型为pom,如果不配置,则默认打jar包,不同的包,生命周期不一样,具体如下

 

3.site

mvn site生成项目文档和报告

 

关于更多的maven信息可以参考官方网站http://maven.apache.org/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值