zoukankan      html  css  js  c++  java
  • Maven够用就好

    学习maven。仅仅要知道pom、dependency、coordination就能够了,剩下的就是学习一个一个的plugin的Goal

    配置
    maven
    export MAVEN_HOME=/home/matthewi/software/maven-3.3.3
    export PATH=$PATH:$MAVEN_HOME/bin

    主要命令
    mvn help:system       初始化仓库
    mvn clean package   清空target,打包
    mvn package            打包,根据项目生成 jar 、war等文件
    mvn clean package -DskipTests   打包前跳过測试
    mvn eclipse:eclipse     生成 Eclipse 项目文件
    mvn compile :编译源码
    mvn test-compile :编译測试代码 
    mvn test : 执行应用程序中的单元測试 
    mvn clean :清除目标文件夹中的生成结果
    mvn jetty:run       执行
    mvn install:install-file -Dfile=/home/matthewi/share/CCP_REST_SMS_DEMO_JAVA_v2.6r/CCP_REST_SMS_DEMO_JAVA_v2.6r/sdk/lib/httpclient.jar -DgroupId=ytx -DartifactId=org.apache.http -Dversion=1.0 -Dpackaging=jar -DgeneratePom=true        第三方库,在公共库里肯定没有。能够使用install加入到本地maven仓库里,然后正常引用就能够了

    參数
    -DskipTests        
    跳过測试
    -Dfindbugs.skip=true    跳过findbug
    -Denforcer.skip=true


    内置变量
    ${basedir} 项目根文件夹
    ${project.build.directory} 构建文件夹,缺省为target
    ${project.build.outputDirectory} 构建过程输出文件夹。缺省为target/classes
    ${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}
    ${project.packaging} 打包类型。缺省为jar
    ${project.xxx} 当前pom文件的随意节点的内容


    dependencyManagement主要目的是管理多个子项目中对同一个依赖包的版本保持一致,不会真实的引入
    Maven 使用dependencyManagement 元素来提供了一种管理依赖版本的方式。

    一般会在一个组织或者项目的最顶层的父POM 中看到dependencyManagement 元素。使用pom.xml 中的dependencyManagement 元素能让全部在子项目中引用一个依赖而不用显式的列出版本。

    Maven 会沿着父子层次向上走。直到找到一个拥有dependencyManagement 元素的项目。然后它就会使用在这个dependencyManagement 元素中指定的版本。


    比如在父项目里:
    <dependencyManagement>  
    <dependencies>  
    <dependency>  
    <groupId>mysql</groupId>  
    <artifactId>mysql-connector-java</artifactId>  
    <version>5.1.2</version>  
    </dependency>  
    ...  
    <dependencies>  
    </dependencyManagement>  
    然后在子项目里就能够加入mysql-connector时能够不指定版本。比如:
    <dependencies>  
    <dependency>  
    <groupId>mysql</groupId>  
    <artifactId>mysql-connector-java</artifactId>  
    </dependency>  
    </dependencies>  
    这样做的优点就是:假设有多个子项目都引用同一样依赖,则能够避免在每一个使用的子项目里都声明一个版本号号,这样当想升级或切换到还有一个版本号时,仅仅须要在顶层父容器里更新,而不须要一个一个子项目的改动 ;另外假设某个子项目须要另外的一个版本号,仅仅须要声明version就可。

    dependencyManagement里仅仅是声明依赖,并不实现引入,因此子项目须要显式的声明须要用的依赖。



    dependencies
    相对于dependencyManagement,全部声明在dependencies里的依赖都会自己主动引入,并默认被全部的子项目继承。

    pluginManagement和dependencyManagement类似,也是为了统一管理版本号。

    生命周期
    Maven有三套相互独立的生命周期,各自是clean、default和site。每一个生命周期包括一些阶段(phase),阶段是有顺序的。后面的阶段依赖于前面的阶段。
    1、clean生命周期:清理项目,包括三个phase阶段。

    1)pre-clean:运行清理前须要完毕的工作
    2)clean:清理上一次构建生成的文件
    3)post-clean:运行清理后须要完毕的工作
    2、default生命周期:构建项目,重要的phase阶段例如以下。
    1)validate:验证project是否正确,全部须要的资源是否可用。
    2)compile:编译项目的源码。

      

    3)test:使用合适的单元測试框架来測试已编译的源码。这些測试不须要已打包和布署。
    4)Package:把已编译的代码打包成可公布的格式,比方jar。

    5)integration-test:如有须要,将包处理和公布到一个可以进行集成測试的环境。
    6)verify:执行全部检查,验证包是否有效且达到质量标准。

    7)install:把包安装到maven本地仓库,能够被其它project作为依赖来使用。
    8)Deploy:在集成或者公布环境下运行。将终于版本号的包复制到远程的repository。使得其它的开发人员或者project能够共享。
    3、site生命周期:建立和公布项目网站,phase阶段例如以下
    1)pre-site:生成项目网站之前须要完毕的工作
    2)site:生成项目网站文档
    3)post-site:生成项目网站之后须要完毕的工作
    4)site-deploy:将项目网站公布到server

    插件
    两种方式调用Maven插件目标。第一种方式是将插件目标与生命周期阶段(lifecycle phase)绑定。这样用户在命令行仅仅是输入生命周期阶段而已,比如Maven默认将maven-compiler-plugin的compile目标与 compile生命周期阶段绑定。因此命令mvn compile实际上是先定位到compile这一生命周期阶段,然后再依据绑定关系调用maven-compiler-plugin的compile目标。另外一种方式是直接在命令行指定要运行的插件目标,比如mvn archetype:generate 就表示调用maven-archetype-plugin的generate目标。这样的带冒号的调用方式与生命周期无关。


    Maven为实现高速构建、有一套内置的插件绑定

    三套生命周期的插件绑定详细例如以下(事实上是各个生命周期阶段与插件的目标的绑定)(这些插件不须要自己手动写到pom文件里当中default生命周期的构建方式会其打包类型有关、打包类型在POM中<packaging>packageType</packaging>指定、一般有jar、war两种类型、以下是 经常使用的jar的构建过程


    clean生命周期
    pre-clean        
    clean                      maven-clean-plugin:clean
    post-clean
    site生命周期
    pre-site
    site:                      maven-site-plugin:site
    post-site
    site-deploy:              maven-site-plugin:deploy
    default生命周期
    process-resources          maven-resources-plugin:resources
    compile                    maven-compiler-plugin:compile
    process-test-resources     maven-resources-plugin:testResources
    test-compile:              maven-compiler-plugin:testCompile
    test:                      maven-surefire-plugin:test
    package                    maven-jar-plugin:jar
    install:                   maven-install-plugin:install
    deploy:                    maven-deploy-plugin:deploy


  • 相关阅读:
    paper 66: MATLAB函数—disp的使用
    paper 65 :尺度不变特征变换匹配算法[转载]
    paper 64:尺度空间(Scale space)理论
    paper 63 :函数比较:imfilter与fspecial
    paper 62:高斯混合模型(GMM)参数优化及实现
    paper 61:计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接
    paper 60 :转载关于视觉SCI期刊
    paper 59:招聘
    paper 58 :机器视觉学习笔记(1)——OpenCV配置
    paper 57 :颜色直方图的代码
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7258836.html
Copyright © 2011-2022 走看看