Maven一些总结
1.Maven的安装和配置
从Maven的官网上下载Maven的安装包,http://maven.apache.org/download.html。
将其解压在你想安放的目录下。
然后配置Maven的环境变量(M2_HOME),比如说我的Maven安装在D:\Maven\apache-maven-3.0.3下,那么M2_HOME=D:\Maven\apache-maven-3.0.3。如果想在任何目录下使用maven命令,就将M2_HOME目录下的bin目录加入到加入到系统环境变量Path中。
使用mvn -v 就可以看到当前maven的版本信息,表明安装成功。
注:安装maven前必须确定自己的电脑已经安装了JDK,并且java环境已经配置好了。
2.设置HTTP代理
有些时候处于安全考虑,自己的主机不能直接访问外网的中央仓库,而是指定一个经过安全认证的代理服务器,通过该代理服务器来访问中央仓库。
如何配置HTTP代理?
首先在安装了Maven后,M2_HOME/conf目录下放置了Maven的配置信息(setting.xml),我们可以通过修改该文件来设置代理。但是,如果直接在该文件上修改,那么影响将是全局的,而且不利于以后的升级。所以我们将该文件复制一份,放到~/.m2下,那么该文件将会覆盖M2_HOME/conf下的setting.xml,而且只对当前用户有效。这样每个用户都可以根据自己的喜好和需求来配置适合自己的Maven。具体如何在setting.xml中配置HTTP代理,代码入下:
<proxies>
<proxy>
<id>my-proxy</id>
<active>true</active>
<protocol>http</protocol>
<host>...</host>
<port>...</port>
<useranme>...</useranme>
<password>...</password>
<nonProxyHosts>...</nonProxyHosts>
</proxy>
</proxies>
<active>的值为true,表示该代理被激活,<protocol>表示代理协议,当然是http了,<host>表示代理的主机地址,<port>代表代理主机的端口,<useranme>,<password>
用来进行安全认证, <nonProxyHosts>代表哪些主机不需要进行代理。
注:当在做项目使用Maven的时候,必定要下载很多jar包和插件放在本地的仓库中,安装好Mavaen后,本地仓库会有一个默认的存放位置。当然也可以通过配置setting.xml文件来改变。比如我自己的配置,将仓库放在D:/dev/repository下:
<localRepository>D:/dev/repository</localRepository>
3.pom文件编写的一些细节
①在编写pom文件的时候,相同的版本号或其他一些字符串会重复出现,那么我们可以将重复的字符串抽取出来,进行定义,然后在需要使用的地方进行引用。如下:
<properties>
<springframework.version>2.5.6</springframework.version>
</properties>
.....
<dependency>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>${springframework.version}</version>
</dependency>
....
4.聊聊Maven的仓库机制
我们不必每做一个项目就将其所依赖的jar包和插件都引入到项目中,我们可以定义依赖,指定在仓库中的位置。仓库包含了很多的插件和jar包,分为本地仓库和远程仓库,当定义一个依赖的时候,系统会首先根据坐标在本地仓库中寻找jar包,如果本地仓库中有所需要的jar包和插件,那么就不会去访问远程仓库,如果没有就会去访问远程仓库,并且把相应的jar包和插件下载到本地仓库中去。
注:安装好Maven以后,如果不执行任何Maven命令,本地仓库目录是不存在的,当用户输入第一条Maven命令之后,Maven才会创建本地仓库。
Maven安装好后,会有一个默认的远程仓库,即中央仓库,配置信息写在Maven的超级POM文件中。当然除了中央仓库,还可以配置其他远程仓库。即当在中央仓库中找不到jar包的时候回去其他远程仓库中寻找。配置代码如下:
<repositories>
<repository>
<id>public</id>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
在组织内部,有一个Maven仓库服务器,该服务器为每个项目都提供独立的Maven仓库,为了防止非法的仓库访问,管理员为每个仓库提供了一组用户名和密码。为了能让Maven访问仓库内容,就需要配置认证信息。配置代码如下:
<server>
<id>releases</id>
<username>deployment</username>
<password>deployment123</password>
</server>
仓库的镜像
如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。换句话说,任何可以从Y获得的构件,都能从它的镜像中获取。
<mirrors>
<mirror>
<id>mirrorId</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
</mirror>
</mirrors>
上述代码配置了一个中央仓库的镜像仓库mirrorId。其他配置项与一个普通仓库是相同的。
5.生命周期和插件
在有关Maven的日常应用中,命令行的输入往往就对用了生命周期,如mvn package就表示执行生命周期阶段package。
Maven有三套生命周期,clean,default,site.
三套生命周期是相互独立的,用户可以仅仅调用生命周期的某一个阶段,而不会对其他周期产生影响。
每个生命周期包含一些阶段,并且这些阶段是有顺序的,后面的阶段依赖前面的阶段。以clean生命周期为例,它有三个阶段,pre-clean,clean,post-clean。当用户调用pre-clean的时候,只有pre-clean阶段执行,当用户调用clean的时候,那么就会执行 从命令行执行maven任务的主要方式就是调用maven的生命周期阶段: |
Maven一些总结的更多相关文章
- 【分享】标准springMVC+mybatis项目maven搭建最精简教程
文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...
- 理解Maven中的SNAPSHOT版本和正式版本
Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,Maven的替代者Gradle也基本沿用了Maven的依赖管理机制.在Maven依赖管理中,唯一标识一个依赖项是由该依赖项的三个 ...
- 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo
Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...
- 安装eclipse的maven插件
我们团队用maven来管理项目需要的库文件,其实以前都没听过maven,第一次接触这个,师兄要我直接去装下这个,开始以为还挺简单的,没想到中间遇到了一些小麻烦,现在把我成功安装maven的过程分享下, ...
- MAVEN学习-第一个Maven项目的构建
MAVEN安装成功之后就可以进行项目的构建和管理了: 为什么要用maven进行项目的构建和管理? 对于初学者来说一个最直接的也是最容易里的优点在于JAR包的管理,相对于以前开发一个项目的时候我们需要用 ...
- Maven 代理设置
在maven的安装目录下 %MAVEN_HOME%/conf/setting.xml 中进行设置 <proxies> <!-- proxy | Specificatio ...
- spring maven pom.xml设置
spring pom.xml设置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...
- maven依赖查询地址
http://search.maven.org/#search%7Cga%7C1%7C
- maven 中snapshot版本和release版本的区别
maven中的仓库分为两种,snapshot快照仓库和release发布仓库.snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本.定义一个组件/模 ...
- Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题
现互联网公司后端架构常用到Spring+SpringMVC+MyBatis,通过Maven来构建.通过学习,我已经掌握了基本的搭建过程,写下基础文章为而后的深入学习奠定基础. 首先说一下这篇文章的主要 ...
随机推荐
- DevOps - 监控告警 - Zabbix
官网3.4版本中文文档 Zabbix documentation in Chinese [Zabbix Documentation 3.4] https://www.zabbix.com/docume ...
- Windows CMD命令 查看无线密码
netsh wlan show profiles netsh wlan show profiles name='无线网络名称' key=clear
- web前后台数据交互的几种方式
1.利用cookie对象 Cookie是服务器保存在客户端中的一小段数据信息.使用Cookie有一个前提,就是客户端浏览器允许使用Cookie并对此做出相应的设置.一般不赞成使用Cookie. (1) ...
- php面向对象(2)构造和析构函数
一.构造方法 构造方法是类中一个“特殊”的方法,作用是在实例化一个对象的同时,给该对象的属性赋值,使之创建完成的时就具有其本身的特有属性 该方法固定格式:[访问修饰符] function _const ...
- CMDB(资产管理系统) day1
运维自动化最重要的就是标准化一切 自动化运维则支持以下功能: 1.OS的选择统一化,同一个项目使用同样的OS系统部署其所需要的各类软件.2.软件安装标准化,例如JAVA虚拟机,php,nginx,my ...
- python标准模块
sys模块 这是一个跟python解释器关系密切的标准库.它提供了一些和python解释器操作密切的属性和函数. sys中常用的函数和属性: sys.argv: sys.argv是专门用来向pytho ...
- L1-043 阅览室 (20 分)
天梯图书阅览室请你编写一个简单的图书借阅统计程序.当读者借书时,管理员输入书号并按下S键,程序开始计时:当读者还书时,管理员输入书号并按下E键,程序结束计时.书号为不超过1000的正整数.当管理员将0 ...
- Codeforces 653G Move by Prime 组合数学
题意: 有一个长度为\(n\)的正整数序列\(a\),有这样一种操作: 每次可以选序列中的某一个数乘上或除以某一个素数. 求对于每一个子序列使其所有元素相等的最少操作次数之和. 分析: 因为两个素数之 ...
- IOS开发---菜鸟学习之路--(十七)-利用UITableView实现个人信息界面
首先来看下我们要实现的效果 需要实现这样的效果 然后我们开始动手吧. 首先选择添加一个新的ViewController 然后打开XIB文件,添加一UITableView 并将样式设置为分组 同时将按住 ...
- 使用 Anime 类在 XNA 中创建小动画(十一)
平方已经开发了一些 Windows Phone 上的一些游戏,算不上什么技术大牛.在这里分享一下经验,仅为了和各位朋友交流经验.平方会逐步将自己编写的类上传到托管项目中,没有什么好名字,就叫 WPXN ...