1、了解Mavenjava
2. 依赖管理工具
项目依赖的第三方的开源类库,均可以经过依赖的方式引入到项目中来。代替了原来须要首先下载第三方jar,再加入到项目中的方式。从而更好的解决了合做开发中依赖增多、版本不一致、版本冲突、依赖臃肿等问题。linux
具体是怎么实现的呢?Maven经过坐标系统准确的定位每个构件,即经过坐标找到对应的java类库。apache
3. 项目信息管理工具
可以管理项目描述、开发者列表、版本控制系统地址、许可证等一些比较零散的项目信息。除了直接的项目信息,经过Maven自动生成的站点,以及一些已有的插件,还可以轻松得到项目文档、测试报告、静态分析报告、源码版本、日志报告等很是具备价值的项目信息。centos
2、 Maven与Nexus
这个问题从Maven的第二个用处提及,依赖管理,经过在Pom中指定坐标的形式将jar引入到项目中。那这个过程,要经历怎样一个流程呢?从哪里寻找jar?下载的jar放到哪里?缓存
将这个问题顺下来,就知道nexus和maven的关系了。服务器
从×××到jar?项目用到的jar又存放在哪里?这引出了仓库的概念,maven经过仓库来统一管理各类构件。Maven的仓库分为本地仓库和远程仓库。maven
当Maven根据坐标寻找构件时,它首先会查看本地仓库,若是本地仓库存在此构件,则直接使用;若是本地仓库不存在此构件,或者须要查看是否有更新的构件版本,Maven会去远程仓库查找,发现须要的构件以后,下载到本地仓库再使用。
项目=>本地仓库=>远程仓库ide
Nexus是一种远程仓库,根据上段的介绍,咱们已经知道远程仓库的做用。在远程仓库中,默认的是中央仓库,中央仓库是Maven核心自带的远程仓库。那就使用中央仓库不就得了吗,为何咱们要安装Nexus呢?工具
咱们从项目实际开发来看:
1.一些没法从外部仓库下载的构件,例如内部的项目还能部署到私服上,以便供其余依赖项目使用。单元测试
3、 Nexus安装
1.环境:centos7
版本:
jdk:jdk-7u45-linux-x64.rpm
nexus:nexus-2.14.2-01-bundle.tar.gz
maven:apache-maven-3.3.9-bin.tar.gz
2.安装jdk,maven环境配置
配置:
JAVA_HOME=/usr/java/jdk1.7.0_45 JRE_HOME=/usr/java/jdk1.7.0_45/jre PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$M2_HOME/bin CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar M2_HOME=/data/apache-maven-3.3.9
export JAVA_HOME JRE_HOME PATH CLASSPATH M2_HOME
source /etc/profile
版本查看:
java版本: java -version
maven版本:mvn --version
3.安装,配置nexus
将下载的nexus-2.14.2-01-bundle.tar.gz包,解压到/data 下
编辑nexus脚本文件
cd /data/nexus/nexus-2.14.2-01/bin
cat nexus NEXUS_HOME=".." ##nexus安装目录/data/nexus/nexus-2.14.2-01 RUN_AS_USER=root ##启动nexus用户
有两个文件:
nexus-2.14.2-01:nexus服务
sonatype-work:私有库目录
nexus设置启动服务:sh /data/nexus/nexus-2.14.2-01/bin/nexus
4.访问nexus
登陆http://IP:8081/nexus/
默认用户名和密码:admin admin123
4、 maven命令
Maven构建java项目,Maven工程结构和内容都基于pom.xml。经常使用的打包命令有mvn package、mvn install、mvn deploy。打包生成jar包或war。但这三者有区别。
其中clean命令是清理构建项目下的target目标文件,即会删除项目下的target文件目录。项目代码修改后需使用clean清除target,从新生成target。
package命令完成项目编译、单元测试、打包功能,但没有将打好的jar包部署到本地maven仓库和远程私服。install命令完成项目编译、单元测试、打包功能,把打好的jar包部署到本地maven仓库,但没有部署到远程私服仓库。deploy命令完成项目编译、单元测试、打包功能,把打好的jar包部署到本地maven仓库,同时也会部署到远程私服仓库。