zoukankan      html  css  js  c++  java
  • Maven基本使用汇总

    1. 基础问题

    0、eclipse工程转maven工程:工程->右键->configure->convert to maven project
        1、pom.xml总是在项目的根目录。
    2、约定优于配置:
    		源码目录为 src/main/java
    		编译输出目录为 target/classes/
    		打包方式默认为jar(如果不指定packaging标签的话)
    		包输出目录为target
    3、maven中通过groupId、artifactId、version定位到一个唯一jar、pom、car。
    4、Maven所需构件都是直接从本地仓库获取的。如果本地没有,会尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。
    5、maven指令
    	//test前会自动compile,package前会自动test,install前会自动package
    	mvn clean compile   //编译
    	mvn clean test
    	mvn clean package   //打包(成jar后war)
    	mvn clean install   //将工程打出的包安装到本地仓库
    	mvn build deploy	//打包后部署至远程仓库
    

    2. pom.xml解析

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>	//当前pom模型的版本,3.0必须是4.0.0
      <groupId>com.huawei</groupId>		//必须,项目属于哪个组,一般值项目关联的组织/公司
      <artifactId>ttt</artifactId>		//必须,项目在组中唯一的id
      <version>0.0.1-SNAPSHOT</version>	//必须,项目当前版本(snapchat-快照,开发中非稳定版本)
      <packaging>war</packaging>	//可选,打包方式,默认jar
      <name>Maven hello project</name>	//可选,对用户更友好的项目名称
      
      <dependencies>  
    	<dependency>  
    	    <groupId>org.springframework</groupId>  //必选
    	    <artifactId>spring-core</artifactId>  //必选
    	    <version>${springframework.version}</version	//必选  
    	    <type>jar</type>   //可选,依赖类型,默认jar
    	    //可选,依赖范围,默认compile-编译/测试/运行都需要;test-只测试需要;provided-编译测试;runtime-运行
    	    <scope>compile</scope>  
    	</dependency>  
      </dependencies>  
    </project>
    

    3. 坐标和依赖-pom.xml

    查看依赖信息,示例
       mvn dependency:tree 优先 --> 解析成依赖树,可以看出某个依赖是从哪个路径引入的。
       mvn dependency:list 	--> 解析并显示依赖列表。 列出所有依赖的文件。
    
    //传递性依赖
       例子:项目有Spring-aop:4.1.1.RELEASE的依赖,而Spring-aop也有自己的依赖(maven仓库中的pom.xml),maven会自动解析依赖获得依赖的包。
    
    //依赖冲突的处理
       如果项目A有这样的依赖关系:A->B->C->X(1.0)、A->D->X(2.0), 这样依赖路径上有两个版本的X。原则如下:
       1.路径最近者优先。如上1.0的路径长度是3,2.0的长度是2,则2.0的X会被使用。
       2.路径长度相同时,第一声明者优先。即在pom.xml中使用先声明的那个。
    
    //排除依赖,示例中A依赖B,但是不想引入传递性依赖C,而是自己显式的声明对C版本的依赖,可一或多个
    <project>
      ...
      <dependencies>
    	<dependency>
    	  <groupId>sample.ProjectA</groupId>
    	  <artifactId>Project-A</artifactId>
    	  <version>1.0</version>
    	  <scope>compile</scope>
    	  <exclusions>
    		<exclusion>  <!-- declare the exclusion here -->
    		  <groupId>sample.ProjectB</groupId>
    		  <artifactId>Project-B</artifactId>
    		</exclusion>
    	  </exclusions>
    	</dependency>
      </dependencies>
    </project>
    

    4. maven仓库-settings.xml

    0). 先查找本地仓库,没有再去远程仓库查找
    a)> 仓库搜索服务 --> http://search.maven.org/
    b). 超级pom.xml,默认的中央仓库 ${M2_HOME}/lib/maven-model-builder-3.0.4.jar --> orgapachemavenmodelpom-4.0.0.xml, 所有Maven POM的父POM
    c). //本地仓库(可从maven中复制一份到此处修改,不要修改全局的settings.xml)
        ~/.m2/settings.xml --> localRepository标签指定本地仓库地址
     
    f). 本地仓库-目录	
    	<settings>
    		  <localRepository>G:program-mymaven-responsery</localRepository>
    	</settings>
    
    g). //远程仓库(私服是一种特殊的远程仓库)可多个,pom.xml配置-单工程有效,settings.xml全部有效
    <settings>
      <repositories>  
    	<repository>  
    	  <id>cloudhopper</id>  
    	  <name>Repository for Cloudhopper</name>  
    	  <url>http://maven.cloudhopper.com/repos/third-party/</url>  //仓库地址,http协议
    	  <releases>       
    		<enabled>true</enabled>   //开启发布版本支持    
    	  </releases>       
    	  <snapshots>       
    		<enabled>false</enabled>  //不会下载快照版本(最新版)
    	  </snapshots>  
    	</repository>  
    </repositories> 
    	
    //远程仓库的认证
    <settings>
    	<servers>
    		<server>
    		  <id>my-proj</id>	//此处的id必须与repository标签下的id一致
    		  <username>admin</username>
    		  <password>pwd</password>
    		</server>
    	</servers>
    </settings>
    
    
    h). 镜像--一般用于代替中央仓库提供服务,一般公司内部有一个
    <settings>
    	<mirrors>
                    <mirror> <!-- 阿里镜像 -->
                      <id>alimaven</id>
                      <name>aliyun maven</name>
                      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
                      <mirrorOf>central</mirrorOf>        
                 </mirror>
    	  <mirror> 
    		<id>rnd-huawei</id> 
    		<name>ibiblio Mirror of http://repo1.maven.org/maven2/</name> 
    		<url>http://rnd-mirrors.hxxx.com/maven/</url>
    		<mirrorOf>central</mirrorOf> 
    	  </mirror>
    	</mirrors>
    

    10. 其它

    10.1 安装

    注:下载后解压即可(先安装jdk), 升级下载最新包,修改M2_HOME值即可
    	1.“系统变量”中增加变量 M2_HOME , 值 H:programapache-maven-3.2.3 (Maven的安装路径)。 
    	2.“ 系统变量”Path中末尾加 %M2_HOME%in;	
    //测试安装成功
    	echo %M2_HOME%		//变量是否指向了正确的安装目录
    	mvn  -v			//能否正确找到mvn的执行脚本
    
    //eclipse中配置maven
    	window-->preference-->搜索maven-->Installations-->add
    

    10.2 设置Http代理(优先配置內源)

    如果是NTLM的代理服务器还会有问题,无法下载

    10.10 创建Maven webapp项目

    创建maven工程-->插件选择 maven-archetype-webapp即可    pom.xml --> run as install 即可打出war包
    如果创建时卡在99%的请情况,则删除E:maven-resp20180414orgapachemavenarchetypes下内容,再重新创建
  • 相关阅读:
    【转载】怎样使用ZEMAX导出高质量的图像动画
    shell中的单引号,双引号,反引号
    docker容器以非root用户启动应用
    js操作json的基本方法
    页岩油
    shell中使用ssh
    强一致性 弱一致性 最终一致性
    CSV和excel
    workbook sheetname最大长度
    ipvs了解
  • 原文地址:https://www.cnblogs.com/Desneo/p/7212152.html
Copyright © 2011-2022 走看看