项目管理工具maven

我jdk版本是1.7.0_95,在网上查了一下1.7属于java7
maven3.3+版本都支持java7,所以我使用3.3.9的maven版本
下载地址:http://mirrors.hust.edu.cn/apache//maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz

一,安装maven

sudo wget http://mirrors.hust.edu.cn/apache//maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
sudo tar zxvf apache-maven-3.3.9-bin.tar.gz
cp -r apache-maven-3.3.9  /usr/local/

配置环境变量,设置路径并编辑文件 ~/.profile or /etc/profile ,在后面添加下面代码:

export M2_HOME=/usr/local/apache-maven-3.3.9
export M2=$M2_HOME/bin
export MAVEN_OPTS="-Xms256m -Xmx512m"
export PATH=$M2:$PATH

重新加载修改的配置文件

$ sudo  source ~/.profile
$ sudo source /etc/profile

测试maven

$ mvn -v
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /usr/local/apache-maven-3.3.9
Java version: 1.7.0_95, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.16.0-67-generic", arch: "amd64", family: "unix"

二,常用命令

  • mvn -v 查看版本
  • mvn compile 编译
  • mvn package 打包
  • mvn test 执行单元测试
  • mvn clean 删除target编译好的目标文件目录
  • mvn install 安装jar包到本地仓库
    • 先在项目中使用mvn package 打包
    • 然后运行 mvn install 将上面打的包安装到本地本地仓库,出现以下情况代表安装成功;

[INFO] Installing /home/lxf/workspaceEE/hongxing-bge/target/hongxing-bge-0.0.1-SNAPSHOT.jar to /home/lxf/.m2/repository/com/hongxing/bge/hongxing-bge/0.0.1-SNAPSHOT/hongxing-bge-0.0.1-SNAPSHOT.jar
[INFO] Installing /home/lxf/workspaceEE/hongxing-bge/pom.xml to /home/lxf/.m2/repository/com/hongxing/bge/hongxing-bge/0.0.1-SNAPSHOT/hongxing-bge-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.194 s
[INFO] Finished at: 2017-04-12T10:01:53+08:00
[INFO] Final Memory: 12M/217M
[INFO] ------------------------------------------------------------------------
```

  • 自动生成属于maven的目录结构的两种方式
  • mvn archetype:generate -DarchetypeCatalog=internal 按着提示进行选择创建
  • mvn archetype:generate
    -DgroupId=组织名,通常是公司网址的反写+项目名 
    -DartifactId=项目名-模块名(项目目录名)
    -Dversion=版本号
    -Dpackage=代码所在包名
mvn archetype:generate -DarchetypeCatalog=internal -DgroupId=com.lxf.maven03 -DartifactId=maven03-model -Dversion=1.0.0snapshoot -Dpackage=com.lxf.maven03.model -DarchetypeCatalog=internal

二,第一个demo

  • maven的目录结构


    项目管理工具maven_第1张图片
    Paste_Image.png
  • 将pom.xml配置文件放在项目的根目录下

                                                                                                                

    4.0.0
    
    com.lxf.maven01
    
    maven01-model
    0.0.1SNAPSHOT

      
      
      
        
            junit
            junit
            4.10
          
     

三,maven的坐标(构件)

项目管理工具maven_第2张图片
Paste_Image.png

四,maven仓库

maven在编译的时候会检查本地仓库是否有所需要的坐标(构件),如果没有则到远程仓库获取,远程仓库地址为:解压jar -xf /usr/local/apache-maven-3.3.9/lib/maven-model-builder-3.3.9.jar, 解压后org/apache/maven/model/pom-4.0.0.xml,所有子xml都继承该xml,该xml中的https://repo.maven.apache.org/maven2就是全球远程中央仓库地址;

  • 镜像仓库(国内的镜像仓库会更快更稳定)
    如果配置了镜像仓库,则该镜像仓库会替换掉全球中央仓库,配置方式如下:
    vim /usr/local/apache-maven-3.3.9/conf/settings.xml
    
      maven.net.cn
      central
      central mirror in china
      http://maven.net.cn/content/groups/public
    
  • 修改本地仓库的位置 
     vim /usr/local/apache-maven-3.3.9/conf/settings.xml
   /path/to/local/repo

五,Eclipse中使用maven

  • 打开window->properences->maven->installations->add找到/usr/local/apache-maven-3.3.9/安装
  • 打开window->properences->maven->user Settings->Browers找到/usr/local/apache-maven-3.3.9/conf/settings.xml
  • 新建maven项目,new->other->maven project


    项目管理工具maven_第3张图片
    Paste_Image.png
  • 在pom.xml右键Run As -> maven build->Goals中填入命令,比如:compile/test/package等

六,maven的生命周期

一个项目要经过:清理 编译 测试 打包 集成测试 验证 部署

  • maven生命周期
  • clean 清理项目
    • pre-clean 执行清理前的工作
    • clean清理上一次构建的所有目录
    • post-clean 执行清理后的文件
  • default 构建项目(最核心的过程)
    • compile/test/package/install
  • site 生成项目站点
    • pre-site 在生成项目前要完成的工作
    • site 生成项目的站点文档
    • post-site 在生成项目站点后要完成的工作
    • site-deploy 发布生成的站点到服务器

七,依赖传递

  • nge依赖bge, shanji依赖nge, 那么在shanji项目的Maven Dependencies中会有对nge,bge的依赖,要想清除shanji对bge的依赖,可以在pom.xml使用配置exclusion
  
    
      
      com.hongxing.bge
      hongxing-nge
      0.0.1-SNAPSHOT
      
      
      
          
                    com.hongxing.bge
                 hongxing-bge
          

      
    
  

八,依赖冲突

项目管理工具maven_第4张图片
Paste_Image.png
项目管理工具maven_第5张图片
Paste_Image.png

九,maven的继承和聚合

  • 聚合
    在一个maven的pom.xml中使用modules,比如在hongxing-juhe的pom.xml中
  com.hongxing
  hongxingi-juhe
  0.0.1-SNAPSHOT
  pom

  
    ../hongxing-bge
    ../hongxing-nge
    ../hongxing-shanji
  

在这个项目的pom.xml右键使用run as 使用install的时候会自动将bge,nge,shanji的jar包安装到本地仓库

  • 继承
    在hongxing-parent的maven项目中的pom.xml中配置, 封装junit
  com.hongxing
  hongxingi-parent
  0.0.1-SNAPSHOT
  pom

  
    UTF-8
    3.8.1
  

  
   
    
      junit
      junit
      ${junit.version}
      test
    
     
  

在hongxing-shanji的maven项目中的pom.xml中的junit修改为从hongxing.parent项目继承过来的junit


      com.hongxing
      hongxing-parent
      0.1.1

十,使用maven创建web项目

  • maven web项目标准目录结构如下(参考:http://www.cnblogs.com/haippy/archive/2012/07/05/2577233.html):

    项目管理工具maven_第6张图片
    Paste_Image.png

    在创建maven项目的使用选择web app模板目录创建
    项目管理工具maven_第7张图片
    Paste_Image.png

  • maven-web项目可以创建也可以导入,我们这个项目是自己导入的,
    点击import->导入maven项目

项目管理工具maven_第8张图片
Paste_Image.png

点击next选择已有的mave项目

如果想在maven项目中使用maven部署和单元测试,需要如下步骤:
(1)需要在项目名上(alipay)右键->new source Folder新建如下(这是maven的约定)
src/main/java (将java源文件放在该source Folder下,比如:action servler等)
src/test/java (将单元测试java原文件放在该source Folder下,注意内部的报名要和src/main/java下的包名一致)
src/main/resources (将公共资源文件放在source Folder下,比如:config.properties 配置文件


项目管理工具maven_第9张图片
maven-web.jpg

(2)在src目录右键->新建Folder目录,名字为webapp,网站静态文件存放处,里面放META-INF ,WEB-INF,以及css js html jsp等

(3)修改发布规则(参考文章:http://www.cnblogs.com/zhaoyang/archive/2012/01/07/2315455.html)

  • 点击项目右键->properties 然后我们要修改发布规则,右键点击项目, 选择 Deployment Assembly


    项目管理工具maven_第10张图片
  • 选择WebContent,把它remove掉,测试类我们也不需要发布,test的两个目录页可以remove


    项目管理工具maven_第11张图片
  • 接着重新指定一个web的路径,点击add,选择Folder -- 〉 next


    项目管理工具maven_第12张图片
  • 在src下找到webapp目录,然后finish


    项目管理工具maven_第13张图片
  • 最后一步,我们要把当前的build path 指向 Maven Dependency, 直接点击add,选择Java Build Path Entries 然后next


    项目管理工具maven_第14张图片
  • 然后再点击finish完成


    项目管理工具maven_第15张图片
  • 完成后如下图:


    项目管理工具maven_第16张图片

使用maven将项目部署到远程服务器

参考文章1:http://www.cnblogs.com/guogangj/p/5505228.html
参考文章2:http://www.cnblogs.com/taoweiji/p/3859860.html

  • 我的pom.xml配置如下:

  4.0.0
  wxpay
  wxpay
  1.0.0
  war
  wxpay
    
    
        
        javax.servlet
        javax.servlet-api
         3.0.1
         
         provided
    
    
        
            junit
            junit
            4.12
        
 
         
            dom4j
            dom4j
            1.6.1
               
        
        
            com.fasterxml.jackson.core
            jackson-databind
            2.8.4
           
           
           
            net.sf.json-lib
            json-lib
            2.4
            jdk15
                compile
                
                    
                        org.jruby
                        jruby
                    
                    
                        org.codehaus.groovy
                        groovy-all
                    
                    
                        log4j
                        log4j
                    
                
            
            
            
                net.sf.ezmorph
                ezmorph
                1.0.6
                compile
            
            
                org.apache.httpcomponents
                httpclient
                4.5.2
            
            
                org.apache.maven.plugins
                maven-resources-plugin
                2.4.3
            
            
                mysql
                mysql-connector-java
                5.1.39
             
    
    
     
    
        alipay
        localTestServer
        http://localhost:8081/manager/text
    

   
    
        
            deploy2production
            
                productionServer
                http://120.26.93.30:8080/manager/text
            
        
    
    
      
    ${warPackageName}
    
     
        
               org.apache.tomcat.maven
               tomcat7-maven-plugin
               2.2
                  
                    ${tomcat.deploy.serverUrl}  
                    ${tomcat.deploy.server}  
                    /${warPackageName}
                  
           
    
  

  • 我的setting.xml配置部署权限
    vim /usr/local/apache-maven-3.3.9/conf/settings.xml
                                                                                                           
    
      alimaven
      aliyun maven
      http://maven.aliyun.com/nexus/content/groups/public/
      central            
    
      
    
        productionServer
        deployer
        123456
    
    
        localTestServer
        deployer
        654321
    
  • 我的tomcat的用户部署权限配置
    vim /usr/local/tomcat/conf/tomcat-users.xml
  
  
  • 部署使用 tomcat7:deploy 或 tomcat7:redeploy

生成测试覆盖率

项目管理工具maven_第17张图片
Paste_Image.png

单元测试命名约定

项目管理工具maven_第18张图片
Paste_Image.png

生成测试报告

Paste_Image.png

maven的6类属性

Paste_Image.png
项目管理工具maven_第19张图片
Paste_Image.png
项目管理工具maven_第20张图片
Paste_Image.png

资源过滤

项目管理工具maven_第21张图片
Paste_Image.png

项目管理工具maven_第22张图片
Paste_Image.png

Paste_Image.png

项目管理工具maven_第23张图片
Paste_Image.png

项目管理工具maven_第24张图片
Paste_Image.png
项目管理工具maven_第25张图片
Paste_Image.png
项目管理工具maven_第26张图片
Paste_Image.png

生成项目站点

  • 使用 mvn site命令
  • 在target/site目录下会找到生成的项目站点文件
  • 当然生成的站点信息是可以通过pom.xml配置的
  • 除了默认的项目信息外,maven还提供了很多生成报告的插件
    比如:
                                                                                                                                              
          
              
              
                  org.apache.maven.plugins
                  maven-jxr-plugin
                  2.5
                  
                      true
                  
              
              
              
                  org.apache.maven.plugins
                  maven-javadoc-plugin
                  2.9.1
              
              
              
                  org.apache.maven.plugins
                  maven-checkstyle-plugin
                  2.17
              
          
      
    
  • checkstyle是帮助开发人员遵循代码规范的工具,可以自定义xml代码规范


    项目管理工具maven_第27张图片
    Paste_Image.png
项目管理工具maven_第28张图片
Paste_Image.png
项目管理工具maven_第29张图片
Paste_Image.png
项目管理工具maven_第30张图片
Paste_Image.png
项目管理工具maven_第31张图片
Paste_Image.png
  • pmd是java代码分析工具,可以发现代码中潜在的bug,无用代码,可优化代码,重复代码等
            
            
                org.apache.maven.plugins
                maven-pmd-plugin                                                                                              
                2.5
            

使用mvn site后,除了生成PMD报告外,还会生成CPD报告(包含了代码拷贝粘贴结果)

  • ChangeLog插件(maven-changelog-plugin)能够基于版本控制系统中的就近变更记录生成三份变更报告


    项目管理工具maven_第32张图片
    Paste_Image.png
项目管理工具maven_第33张图片
Paste_Image.png
  • Cobertura 生成测试覆盖率报告


    项目管理工具maven_第34张图片
    Paste_Image.png
  • site站点样式,皮肤以及布局都可以自己配置,src/site.xml中

  • 可以配置pom.xml使用scp,ftp等方式将site部署到远程服务器

Maven远程Tomcat热部署

配置多环境部署

  • https://blog.csdn.net/xlgen157387/article/details/68961371

你可能感兴趣的:(项目管理工具maven)