maven

Maven

mvn -Dmaven.test.skip=true -U clean install

mvn clean package -U (强制拉一次)

mvn archetype:create-from-project

mvn archetype:generate -DarchetypeCatalog=local

mvn dependency:tree

mvn clean package -Dmaven.test.skip=true -Ptest

认识Maven

优势

  • 约定优于配置
  • 简单
  • 测试支持
  • 构建简单
  • CI
  • 插件丰富

下载

​ https://maven.apache.org/down...

安装

​ maven-model-builder-3.6.0.jar/org/apache/maven/model

文件分析

自己的classloader

所有自己的仓库配置

超级父pom

配置 MVM_HOME

  • Windows path
  • Linux .bash_profile

    • export M2_HOME=/Users/xx/tools/apache/apache-maven-3.6.0
  • MAVEN_OPTS

​ 配置setting.xml


    alimaven
    aliyun maven
   http://maven.aliyun.com/nexus/content/groups/public/
    central


ui
central
Human Readable Name for this Mirror.
http://uk.maven.org/maven2/


osc
central
http://maven.oschina.net/content/groups/public/


osc_thirdparty
thirdparty
http://maven.oschina.net/content/repositories/thirdparty/

Pom

groupId

​ 一般是域名反写

 com.zzjson

artfactId

​ 功能命名

version

​ 版本号

packaging

​ 打包方式 默认是jar

dependencyManagement

​ 只能出现在父pom

​ 统一版本号

​ 声明 (子POM里用到再引)

Dependency

​ Type 默认jar

scope

compile

​ 默认

​ 编译(maven编译整个项目)

​ 例如spring-core

test

​ 测试

provided

​ 编译 例如 servlet,tomcat已经有了

​ 打包不会打进去,相当于compile但是在打包阶段做了exclude操作

runtime

​ 运行时 例如JDBC驱动实现

system

​ 本地一些jar 例如短信jar

依赖传递

compile:编译依赖范围,在编译,测试,运行时都需要。

test: 测试依赖范围,测试时需要。编译和运行不需要。如Junit

runtime: 运行时依赖范围,测试和运行时需要。编译不需要。如JDBC驱动包

provided:已提供依赖范围,编译和测试时需要。运行时不需要。如servlet-api

system:系统依赖范围。本地依赖,不在maven中央仓库。

第一列表示直接依赖的scope,第一行表示间接依赖的scope

compile test provided runtime
compile compile - - runtime
test test - - test
provided provided - provided provided
runtime runtime - - runtime

依赖仲裁

mvn dependency:tree

如果都定义了版本,那么以最近的为准

​ 最短路径原则

​ 加载先后原则

exclusions

​ 排除包

生命周期

  • clean 清理项目

    • pre-clean执行一些清理前需要完成的工作
    • clean清理上一次构建生成的文件
    • post-clean执行一些清理后需要完成的工作
  • default
  • Site

​ lifecycle/phase/goal

​ 1.A Build Lifecycle is Made Up of Phases

​ 一个生命周期由多个phase组成的

​ 2.A Build Phase is Made Up of Plugin Goals

​ 一个phases是由多个goals组成的

生命周期运行会从前往后

版本管理

1.0-SNAPSHOT

​ i. repository 删除

​ ii. mvn clean package -U (强制拉一次)

主版本号.次版本号.增量版本号-<里程碑版本>

1.0.0-RELAESE

常用命令

  • compile
  • clean 删除target/
  • test test case junit/testNG
  • package 打包

  •  
         
             plugin
             com.zzjson
             1.1
             
                 
                     ddd
                 
                 
                     
                         d
                     
                     
                         d1
                     
                 
             
             
                 
                     package
                     
                         myplugin
                     
                 
             
         
     
  • install 把项目install到local repo
  • deploy 发本地jar发布到remote

插件

常用插件

  • https://maven.apache.org/plug...
  • http://www.mojohaus.org/plugi...
  • findbugs 静态代码检查

versions 统一升级版本号

  • 
        org.codehaus.mojo
        versions-maven-plugin
        2.3
    
    http://www.mojohaus.org/versions-maven-plugin/index.html

    mvn versions:set -DnewVersion=1.1-SNAPSHOT

source 打包源代码

  • 
        maven-source-plugin
        2.3
        
            
                attach-sources
                install
                
                    jar-no-fork
                
            
        
    

assembly 打包zip、war


    maven-assembly-plugin
    3.1.0
    
        
            
                shuncom.dubbo.task.main.BootStrap
            
        
        jar-with-dependencies
    
    
        
            make-assembly
            package
            
                single
            
        
    

tomcat7


    org.apache.tomcat.maven
    tomcat7-maven-plugin
    2.2
    
        8080
        /
    

自定义插件

https://maven.apache.org/guides/plugin/guide-java-plugin-development.html

maven-plugin

导入依赖


            org.apache.maven
            maven-plugin-api
            3.5.0
        
        
            org.apache.maven.plugin-tools
            maven-plugin-annotations
            3.5
        

extends AbstractMojo

mvn install

参数传递

​ Profile

使用场景 dev/test/pro

setting.xml 家和公司两套

仓库

下载

​ http://books.sonatype.com/nex...

访问地址

http://lohost:8081/nexus(自带jetty)

admin/admin123

内容配置

Type:

​ 依赖jar包的方式

group

​ 把group作为合集提供,挨个jar去仓库查找

hosted

​ 本地的

​ 三方的

​ 阿里短信jar包

​ released

​ snapshosts

proxy

​ 当maven dependce本地仓库没有找到,私服也没有,则去下载,从远端下载到私服

发布

在pom.xml配置


    
        repo-mirrors
        center-repository
        http://uk.maven.org/maven2
    
    
        repo-mirrors
        center-repository
        http://uk.maven.org/maven2
    

mvn deploy

登录

​ 也需要验证用户名密码,id需要和pom中一致

下载jar配置

  • 配置mirror
  • Profile

archetype 模版化

生成一个archetype

mvn archetype:create-from-project

进入目录

cd /target/generated-sources/archetype

mvn install

b) 从archetype创建项目

mvn archetype:generate -DarchetypeCatalog=local

Profile

配置文件


    
        dev
        
            dev
        
        
            false
        
    
    
        prod
        
            prod
        
        
            true
        
    
    
        test
        
            test
        
        
            false
        
    

    
        ${basedir}/src/main/resources
        
            conf/**
        
    
    
        src/main/resources/conf/${profiles.active}
    

代码,指定不同的环境

Setting.xml


    ali
    
        
            nexus
            http://maven.aliyun.com/nexus/content/groups/public/
            
                true
                always
                warn
            
            
                true
                always
                fail
            
        
    
    
        
            nexus
            http://maven.aliyun.com/nexus/content/groups/public/
            
                true
                always
                warn
            
            
                true
                fail
                always
            
        
    


    external
    
        
            repo-mirrors
            http://uk.maven.org/maven2
        
    
    
        
            plugin-repo-mirror
            http://uk.maven.org/maven2
        
    

mvn clean package -Dmaven.test.skip=true -Ptest

仓库

[root@snails ~]# wget http://download.sonatype.com/nexus/3/latest-unix.tar.gz

dependencyManagement使用能够帮助我们进行子项目的版本号管理


    
        
            com.zzjson.dubbo.order
            order-api
            1.0-SNAPSHOT
        
    

版本

SNAPSHOT

​ 版本会替换仓库中的jar

release

​ 版本不会替换

你可能感兴趣的:(maven)