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下内容,再重新创建
  • 相关阅读:
    215. Kth Largest Element in an Array
    214. Shortest Palindrome
    213. House Robber II
    212. Word Search II
    210 Course ScheduleII
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    206. Reverse Linked List
    sql 开发经验
  • 原文地址:https://www.cnblogs.com/Desneo/p/7212152.html
Copyright © 2011-2022 走看看