Chinaunix首页 | 论坛 | 博客
  • 博客访问: 141003
  • 博文数量: 19
  • 博客积分: 230
  • 博客等级: 二等列兵
  • 技术积分: 239
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-01 12:47
文章分类
文章存档

2014年(5)

2013年(4)

2012年(10)

分类: Java

2014-03-13 13:40:59

Maven的生命周期是抽象的,这意味这生命周期本身不做任何实际的工作,在Maven的设计中,实际的任务都交由插件来完成。这种思想和设计模式中的模版方法(Template Method)非常类似
三套生命周期
clean生命周期
pre-clean 执行一些清理前需要完成的工作
clean 清理上一次构建生成的文件
post-clean 执行一些清理后需要完成的工作
default生命周期
validate
initialize
generate-sources
process-sources 处理项目主资源文件。一般来说,是对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中。
generate-resources
process-resources
compile 编译项目的主源码。一般来说,是编译src/main/java目录想的Java文件至项目输出的主classpath目录中
process-classes
generate-test-sources
process-test-sources 处理项目测试资源文件。一般来说,是对src/test/resources目录的内容进行变量替换等工作后,复制到项目输出的测试classpath目录中。
generate-test-resources
process-test-resources
test-compile 编译项目的测试代码。一般来说,是编译src/test/java目录下的Java文件至项目输出的测试classpath目录中。
process-test-classes
test 使用单元测试框架运行测试,测试代码不会被打包或部署
prepare-package
package 接受编译好的代码,打包成可发布的格式,如JAR
pre-integration-test
integration-test
post-integration-test
verify
install 将包安装到Maven本地仓库,供本地其它Maven项目使用
deploy 将最终的包复制到远程仓库,供其它开发人员和Maven项目使用

详细

site生命周期
pre-site 执行一些在生成站点之前需要完成的工作。
site 生成项目站点文档
post-site 执行一些在生成站点之后需要完成的工作。
site-deploy 将生成的项目站点发布到服务器上。

内置绑定
默认jar,还有war、pom、maven-plugin、ear等
详细 #Built-in_Lifecycle_Bindings

自定义绑定
如生成一个项目的源码jar包,内置的插件并没有涉及这一任务,因此需要用户自行配置。maven-source-plugin可以完成此任务,它的jar-no-fork目标可以将项目的主代码打包成jar文件,可以绑定到default生命周期的verify阶段上,在执行完集成测试后和安装构件之前创建源代码jar包。
    
        
            
                org.apache.maven.plugins
                maven-source-plugin
                2.1.1
                
                    
                        attache-sources
                        verify
                        
                            jar-no-fork
                        

                    

                

            

        

    


配置插件的基本坐标,还有插件执行配置,executions下每个execution子元素可以用来配置执行一个任务。该例子中配置了一个id为attache-sources的任务,通过phase配置 ,将其绑定到verify生命周期阶段上,再通过goals配置指定要执行的插件的目标。运行mvn verify 就能看到输出。如果多个目标被绑定到同一个阶段,这些插件的声明顺序决定了目标的执行顺序。
命令行插件配置
$mvn install-Dmaven.test.skip=true
-D参数,并伴随一个参数键=参数值的形式
POM中插件全局配置
适合从项目创建到项目发布都不会改变,或者很少改变,不适合每次都在命令行中输入
    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                2.1
                
                    1.5
                    1.5
                

            

        

    

配置了maven-compile-plugin告诉它编译java1.5版本的源文件,生成与JVM1.5兼容的字节码文件。

POM中插件任务配置
    
        
            
                org.apache.maven.plugins
                maven-antrun-plugin
                1.3
                
                    
                        ant-validate
                        validate
                        
                            run
                        

                        
                            
                                I'm bound to validate phase.
                            

                        

                    

                    
                        ant-verify
                        verify
                        
                            run
                        

                        
                            
                                I'm bound to verify phase.
                            

                        

                    

                

            

        

    



获取插件信息
详细
下载

托管在Codehaus上的Mojo项目
详细
下载
命令行下使用的是插件目标参数的表达式 没有表达式的只能通过POM配置,如surefire:test skip参数表达式为${maven.test.skip} 命令行-Dmaven.test.skip=true

$mvn help: describe-Dplugin = org.apache.maven.plugins: maven-compiler-plugin:2.1
省去版本信息,就可以得到最新的版本描述,可以使用插件目标前缀替换坐标
$mvn help: describe-Dplugin =compiler
如果只想要描述某个插件目标的信息,可以加上goal参数
$mvn help: describe-Dplugin=compiler-Dgoal=compile
输出详细信息
$mvn help: describe-Dplugin=compiler-Ddetail
mvn-h 显示mvn命令帮助

Maven内置插件仓库配置
    
        
            central
            Maven Plugin Repository
            
            default
            
                false
            

            
                never
            

        

    



如果是官方maven插件 ,在pom配置插件时候,可以省略groupId
让Maven在解析插件仓库元数据的时候,也检查其他groupId上的插件仓库元数据
    
        
            com.your.plugins
        

    

这样Maven就不仅仅会检查org/apache/maven/plugin/maven-metadata.xml和org/codehaus/mojo/maven-metadata.xml,还会检查com/your/plugins/maven-metadata.xml.

阅读(1795) | 评论(0) | 转发(0) |
0

上一篇:Maven实战笔记-maven依赖

下一篇:没有了

给主人留下些什么吧!~~