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 --> \org\apache\maven\model\pom-4.0.0.xml, 所有Maven POM的父POM
c). //本地仓库(可从maven中复制一份到此处修改,不要修改全局的settings.xml)
~/.m2/settings.xml --> localRepository标签指定本地仓库地址 f). 本地仓库-目录
<settings>
<localRepository>G:\program-my\maven-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:\program\apache-maven-3.2.3 (Maven的安装路径)。
2.“ 系统变量”Path中末尾加 %M2_HOME%\bin;
//测试安装成功
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-resp20180414\org\apache\maven\archetypes下内容,再重新创建

Maven基本使用汇总的更多相关文章

  1. Maven进价:Maven构建错误汇总

    问题:The method of type must override asuperclass? annotation:@Override的原因 办法:项目右键->build path-> ...

  2. Maven之问题解决汇总

    Maven使用中,遇到的问题及解决办法记录下来 pom.xml顶部报错问题解决方法:http://stackoverflow.com/questions/5074063/maven-error-fai ...

  3. idea 下的maven使用问题汇总

    1,-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable ...

  4. maven基础知识汇总

    maven的dependency中scope=compile和provided的区别 对于scope=compile的情况(默认scope),也就是说这个项目在编译,测试,运行阶段都需要这个artif ...

  5. maven学习知识点汇总

    1. 2.maven自动建立目录骨架 首先进入目录结构:  PS C:\WINDOWS\system32> cd C:\Users\10563\Desktop\test 然后输入自动构建命令:  ...

  6. Maven 问题笔记汇总

    Web项目通过Maven部署到Tomcat的错误. Maven环境下面多项目之间的引用 Maven 远程仓库下载慢的的解决方案 Intellij IDEA 像eclipse那样给maven添加依赖 I ...

  7. 2016年国内开源maven镜像站点汇总

    本文系转载,原文链接:https://www.cnblogs.com/xunianchong/p/5684042.html 一.站点版 (一).企业站 1.网易:http://mirrors.163. ...

  8. Maven常用命令汇总

    1.单独构建多模块项目中的某个模块 mvn clean package -pl 模块名 2.跳过测试代码直接打包 mvn install -DskipTests

  9. Maven进价:Maven构建系列文章

    Maven:基于Java平台的项目构建.依赖管理和项目信息管理. 1.构建 Maven标准化了构建过程 构建过程:编译.运行单元测试.生成文档.打包和部署 避免重复:设计.编码.文档.构建 2.依赖管 ...

随机推荐

  1. delphi 线程教学第二节:在线程时空中操作界面(UI)

    第二节:在线程时空中操作界面(UI)   1.为什么要用 TThread ?   TThread 基于操作系统的线程函数封装,隐藏了诸多繁琐的细节. 适合于大部分情况多线程任务的实现.这个理由足够了吧 ...

  2. openStack kvm 虚拟机CPU颗粒化控制

    前一篇理解cpu topology对CPU Topology进行了学习总结,这里想总结下OpenStack下vCPU与pCPU常用的的绑定方式. 在尝试这些绑定之前,尤其是处理NUMA架构时还是建议看 ...

  3. tomcat solr 限制ip

    <Context path="/solr" reloadable="false" docBase="/var/www"> < ...

  4. VUE之使用百度地图API

    利用vue创建点餐系统,在点餐系统中需要知道商家地址信息,这时就需要借用百度地图API. 步骤一:申请百度地图密钥: 步骤二:在index.html中添加百度地图JavaScript API接口: & ...

  5. [原创]Devexpress XtraReports 系列索引

    该系列已经完结...以后如果有高级功能,会再开一个新的系列,该系列是比较基础的报表应用..谢谢大家一直的支持. [原创]Devexpress XtraReports 系列 1 创建静态报表 Demo地 ...

  6. Hive 进阶

    两种情况下不走map-reduce: 1. where ds >' ' //ds 是partition 2. select * from table //后面没有查询条件,什么都没有 1.建表 ...

  7. 1、perl学习

    1.字符串函数 print chomp chop length uc lc index ord #转符号为ASCII的数字 chr #转数字为ASCII的字母 substr($string,offse ...

  8. Java基础之cmd入门操作笔记

    前提:jdk已安装且环境变量配置成功,参考上文jdk 安装及环境变量配置 入门操作步骤: 1.打开记事本或者notepad,编写Abc代码,具体如下: public class Abc{    pub ...

  9. final注意事项

    final修饰的类为终态类,不能被继承,而 抽象类是必须被继承的才有其意义的,因此,final是不能用来修饰抽象类的. final修饰的方法为终态方法,不能被重写.而继承抽象类,必须重写其方法. 抽象 ...

  10. c++中字符串的截取:

    c++中字符串的截取: string 类提供字符串处理函数,利用这些函数,程序员可以在字符串内查找字符,提取连续字符序列(称为子串),以及在字符串中删除和添加.我们将介绍一些主要函数. 1.函数fin ...