windows/Linux/Mac下安装maven,maven作用

Linux下安装maven

1.首先到Maven官网下载安装文件,目前最新版本为3.0.3,下载文件为apache-maven-3.3.9-bin.tar.gz,下载可以使用wget命令;

2.进入下载文件夹,找到下载的文件,运行如下命令解压

tar -xvf  apache-maven-2.2.1-bin.tar.gz

解压后的文件夹名为apache-maven-3.0.3

3.使用mv命令将apache-maven-3.0.3文件夹拷贝到自己指定的文件夹,比如/usr/local/下

mv -rf apache-maven-3.0.3 /usr/local/

4.配置环境变量,编辑/etc/profile, 或/etc/profile.d/jdk.sh文件,添加如下代码

export MAVEN_HOME=/usr/local/apache-maven-3.0.3
export PATH=${PATH}:${MAVEN_HOME}/bin

Mac:

export MAVEN_HOME=/Users/xxx/Applications/apache-maven-3.3.
export PATH=${PATH}:${MAVEN_HOME}/bin

5.保存文件,并运行如下命令使环境变量生效

source /etc/profile

mac/linux都可以设在~/.bashrc这个文件中,或者~/.bash_profile
6.在控制台输入如下命令,如果能看到Maven相关版本信息,则说明Maven已经安装成功

mvn -v
 
 
windows下Maven 的安装
 
1.检查JDK。在安装 Maven 之前,先确保已经安装JDK1.6及以上版本,并且配置好环境变量。
 
2.下载maven3,最新版本是 Maven 3.2.1,下载地址:http://maven.apache.org/download.html   
下载 apache-maven-3.2.1-bin.zip 文件后,并解压到  D:\apache-maven-3.2.1-bin
 
3.配置maven3的环境变量:先配置 M2_HOME 的环境变量,新建一个系统变量 MAVEN_HOME , 路径是:D:\apache-maven-3.2.1-bin 
再配置path环境变量,在path值的末尾添加";%MAVEN_HOME%\bin"
 
4.点击确定之后,打开cmd窗口:输入 mvn -version, 出现正确的内容表示安装成功。
 
 
 

Maven的主要特点:

  • 遵循最佳实践的简单项目设置 - 在几秒钟内启动新项目或模块
  • 所有项目的一致使用 - 意味着新开发人员进入项目的时间不会增加
  • 卓越的依赖管理,包括自动更新,依赖关闭(也称为传递依赖)
  • 能够轻松地同时处理多个项目
  • 一个庞大且不断增长的库和元数据库,可以立即使用,并与最大的开源项目仓库一起,以实现最新版本的实时可用性
  • 可扩展,能够轻松编写 Java或脚本语言的插件
  • 只需很少或不需要额外配置即可即时访问新功能
  • 用于在Maven之外进行依赖关系管理和部署的Ant任务
  • 基于模型的构建:Maven能够根据项目的元数据将任意数量的项目构建到预定义的输出类型(如JAR,WAR或分发)中,而无需在大多数情况下执行任何脚本。
  • 站点的项目信息的连续性:使用与构建过程相同的元数据,Maven能够生成包含您需要添加的任何文档的网站或PDF,并添加有关项目开发状态的标准报告。在“项目信息”和“项目报告”子菜单下,可以在本网站左侧导航栏的底部看到此信息的示例。
  • 发布管理和发布发布:没有太多额外配置,Maven将与您的源代码控制系统(如Subversion或Git)集成,并根据特定标记管理项目的发布。它还可以将其发布到分发位置以供其他项目使用。Maven能够发布单个输出,例如JAR,包含其他依赖关系和文档的存档,或者作为源代码分发。
  • 依赖管理:Maven鼓励使用JAR和其他依赖项的*存储库。Maven附带了一种机制,您的项目客户可以使用该机制从*JAR存储库下载构建项目所需的任何JAR,就像Perl的CPAN一样。这允许Maven的用户跨项目重用JAR并鼓励项目之间的通信,以确保处理向后兼容性问题。
 
 

Maven使用阿里云国内镜像
1、修改maven根目录下的conf文件夹中的setting.xml文件,内容如下:
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>

 
 
 
修改IDEA的maven配置:
 setting-->build-->maven
 (1)user setting file:$MAVEN_HOME/conf/setting.xml
 (2)local repository:$MAVEN_HOME/repository/
 

Maven是一个构建工具,服务与构建.使用Maven配置好项目后,输入简单的命令,如:mvn clean install,Maven会帮我们处理那些繁琐的任务.
Maven是跨平台的.
Maven较大化的消除了构建的重复.
Maven可以帮助我们标准化构建过程.所有的项目都是简单一致的,简化了学习成本.
总之,Maven作为一个构建工具,不仅帮我们自动化构建,还能抽象构建过程,提供构建任务实现.他跨平台,对外提供一致的操作接口,这一切足以使他成为优秀的,流行的构建工具.
但是Maven不仅是构建工具,他还是一个依赖管理工具和项目信息管理工具.他还提供了*仓库,能帮我们自动下载构件.
使用Maven还能享受一个额外的好处,即Maven对于项目目录结构、测试用例命名方式等内容都有既定的规则,只要遵循了这些成熟的规则,用户在项目间切换的时候就免去了额外的学习成本,可以说是约定优于配置(Convention Over Configuration)。

1. maven不仅是构建工具,它还是依赖管理工具和项目管理工具,提供了*仓库,能够帮我们自动下载构件。
2.为了解决的依赖的增多,版本不一致,版本冲突,依赖臃肿等问题,它通过一个坐标系统来较精确地定位每一个构件(artifact)。
3.还能帮助我们分散在各个角落的项目信息,包括项目描述,开发者列表,版本控制系统,许可证,缺陷管理系统地址。
4.maven还为全世界的Java开发者提供了一个免费的*仓库,在其中几乎可以找到任何的流行开源软件。通过衍生工具(Nexus),我们还能对其进行快速搜索
5.maven对于目录结构有要求,约定优于配置,用户在项目间切换就省去了学习成本。

1、原来的项目中需要的jar包必须手动“复制”、”粘贴” 到WEB-INF/lib 项目下,而借助Maven,可以将jar包仅仅保存在“仓库”中,有需要使用的工程只需要“引用”这个文件,并不需要重复复制到工程中。
2、原来的项目中所需要的jar包都是提前下载好的,而Maven在联网状态下会自动下载所需要的jar包。首先在本地仓库中找,找不到就在网上进行下载。
3、原来的项目中一个jar包所依赖的其他jar包必须手动导进来,而Maven会自动将被依赖的jar包导进来。
4、原来的项目一个项目就是一个工程,而借助Maven可以将一个项目拆分成多个工程。

  (1) 本地仓库:本地仓库就在自己的机器上,我们可以在自己的机器上创建一个maven仓库,然后就需要的jar包导入进去,就可以在项目中引用。
  (2) 私服仓库:私服仓库在公司局域网内,公司可以在自己的局域网内创建一个仓库,将项目所需要的jar包存放在此仓库中,这样整个项目组就都可以使用此仓库提供的jar包,不再需要在自己本地创建仓库来保存jar包。
  (3) *仓库:*仓库是最大的一个仓库,由Apache组织来负责维护,几乎包括了现在所有的jar包(有一些涉及版权问题没有,比如:oracle数据库的连接jar包),但是*仓库的访问速度非常慢。

maven作用
1.控制项目间依赖关系方案
A项目依赖B项目的某些功能。将B项目打包为jar,并在A项目的Library下导入B的jar文件。
这样做有着很明显的缺点:
1.如果在开发过程中,发现B中的bug,则必须重新将B打包并对A项目进行重编译操作
2.在协同开发A项目时,为了保证其能够正常运行,
要么选择将B打包入A中,
要么选择将B一样发布出去并告知开发者使用方法。显然这两个方法都不太好,
*前者可能造成资源浪费(比如开发者可能正在开发依赖B的其它项目,B已经存储到本地了),而后者则会为项目正常运行带来风险(一旦把工作交给人工注定会带来一定的失败率)。

2Maven的核心功能便是合理叙述项目间的依赖关系。
所有的Maven项目包含着一个名为pom.xml的文件,在文件中记录着自己的<groupId><artifactId><version>等字段,这些字段在创建Maven项目时填写,Maven会依据它们来定位到该项目。
在pom中的另一个关键标签是<dependencies>,该标签下可以包含若干个<dependency>标签,而<dependency>下则是上面介绍的<groupId><artifactId><version>等依赖字段,它们确定着一个唯一的项目版本。

3[Maven库]
以刚才的A、B项目为例,在A项目的pom文件中写入<dependency>关联B项目,Maven会在工作区中找到B项目,并创建依赖。此时A项目可以直接访问到B项目中的类资源,而且对A调试时依然会击中B项目中设置的断点。
除去工作区的依赖关联外,Maven也可以关联一个远端镜像中的项目,在默认情况下,如果工作区中没有对应的项目记录,Maven会连接到中心仓库查找,如果找到,它会把项目下载到本地库中(Windows中本地库位于用户文档的.m2目录下),并自动设置关联。这是一个十分便利的特性,在我们需要额外jar包支持时,不再需要进行手动的下载和引入,我们仅需要将需要项目对应的依赖字段粘贴到pom的合适位置,剩下的交给Maven完成即可。

4.[其它特性]
1.镜像源
很明显,Maven中心仓库负载比较大,而且不在国内,因此速度非常慢,有时甚至会找不到依赖。因此,尤其是在小规模团队开发这种场合下,搭建一个Maven私服会极大的提升效率。这里推荐一个Maven镜像搭建工具:Nexus:http://www.sonatype.org/nexus/
使用它可以很快速方便的搭建私有Maven镜像源,之后在Maven的settings.xml里进行配置即可。
2.惰性下载src源码
在一些时候,我们需要参阅依赖项目的源文件,此时可以尝试直接双击class文件,如果Maven镜像源中存在源文件,会自动下载到本地,eclipse会自动加载并显示。
3.编译参数配置
笔者使用Eclipse Luna版,Maven默认的Java编译版本为1.5,我们可以在pom指定其编译版本,使其提升至1.7(参考luajava pom中的build标签);此外这些设置也会被诸如jenkins持续集成等自动化工具读取并进行恰当配置。

思考:
maven描述项目间依赖,在pom.xml中描述之后,maven会下载相关依赖,不需要手动导入。
并且该文件可以描述build相关信息,jenkins可以读取相关信息

上一篇:java匹配中文汉字的正则表达式


下一篇:Windows 下安装 MongoDB