Maven是属于apache软件基金会下一个开源免费的项目,是跨平台的项目管理工具, Maven采用了一种被称之为Project Object Model (POM)概念来管理项目,全部的项目配置信息都被定义在一个叫作POM.xml的文件中。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理,能够在代码进行部署的过程当中自动解决项目中代码的依赖环境,须要从maven的镜像仓库中进行下载依赖环境,一般下载比较慢,企业中会在公司内部搭建nexus(私服),将构建项目中的依赖环境保存到nexus服务器中,提升访问速度。html
POM项目对象模型,是Maven工程的基本工做单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖等等。
执行任务或目标时,Maven会在当前目录中查找POM。读取POM,获取所需的配置信息,而后执行目标。
POM中能够指定如下配置:项目依赖、插件、执行目标、项目构建profile、项目版本、项目开发列表、相关邮件列表信息。java
Maven的功能:node
- maven模型的JAVA项目对源代码、单元测试代码、资源、jar包等有规范和目录规划;
- 解决项目间的依赖关系、版本不一致、版本冲突等问题;
- 合理的jar管理机制。
.linux
maven使用场景(从运维人员的角度来看):web
- 原来项目中的jar包必须手动复制、粘贴到WEB-INF/lib项目下,而借助maven,能够将jar包仅仅保存在仓库中,有须要使用的工程只须要引用这个文件,并不须要重复复制到工程中;
- 原来的项目中所须要的jar包都是提早下载好的,而maven在联网状态下会自动下载所须要的jar包。首先在本地仓库中找,找不到就在网上进行下载;
- 原来的项目中一个jar包所依赖的其余jar包必须手动导进来,而maven会自动将被依赖的jar包导进来;
- 原来的项目一个项目就是一个工程,而借助maven能够将一个项目拆分红多个工程;
项目构建过程包括:清理项目→编译项目→测试项目→生成测试报告→打包项目→部署项目这几个步骤,这六个步骤就是一个项目的完整构建过程。
Maven仓库
在Maven的专业术语中,仓库是指一个位置,Maven仓库是项目中依赖的第三方库,这个库所在的位置叫作仓库。在Maven中,任何一个依赖、插件或者项目构建的输出,均可以称之为构件。数据库
Maven仓库能帮助咱们管理构件(主要是Jar),它就是放置全部JAR文件(WAR、ZIP、POM等等)的地方。apache
Maven仓库有三种类型:本地、中央、远程。
本地仓库
Maven 的本地仓库,在安装 Maven 后并不会建立,它是在第一次执行 maven 命令的时候才被建立。vim
运行 Maven 的时候,Maven 所须要的任何构件都是直接从本地仓库获取的。若是本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,而后再使用本地仓库的构件。缓存
默认状况下,无论Linux仍是 Windows,每一个用户在本身的用户目录下都有一个路径名为 .m2/respository/ 的仓库目录。
中央仓库
Maven中央仓库是由Maven社区提供的仓库,其中包含了大量经常使用的库。
Maven内置了远程公用仓库
中央仓库包含了绝大多数流行的开源Java构件,以及源码、做者信息、SCM、信息、许可证信息等。通常来讲,简单的Java项目依赖的构件均可以在这里下载到。tomcat
中央仓库的核心概念:
一、这个仓库由 Maven 社区管理;
二、不须要配置便可使用;
三、须要经过网络才能访问。
远程仓库(第三方仓库)
第三方仓库又称为内部中心仓库,也称为私服。
私服:通常是由公司本身设立的,只为公司内部共享使用。它既能够做为公司内部构件协做和存档,也能够做为公用类库镜像缓存,减小在外部访问和下载的频率(使用了私服就减小了对中央仓库的访问)。
了解更多可参考Maven教程
安装Maven,须要依赖jdk1.8版本
所需软件包(提取码:u27c)能够下载我提供的,也可根据需求来自行下载
一、配置jdk环境
#检测当前jdk,并卸载掉 [root@maven ~]# rpm -qa | grep jdk copy-jdk-configs-1.2-1.el7.noarch java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64 java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64 java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64 [root@maven ~]# rpm -e java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 --nodeps [root@maven ~]# rpm -e java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64 --nodeps #解压jdk包 [root@maven ~]# tar zxf jdk-8u211-linux-x64.tar.gz -C /usr/local/ [root@maven ~]# vim /etc/profile .... export JAVA_HOME=/usr/local/jdk1.8.0_211 export JRE_HOME=/usr/local/jdk1.8.0_211/jre export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH [root@maven ~]# source /etc/profile # 执行文件刷新变量 [root@maven ~]# java -version # 查看当前版本 java version "1.8.0_211" Java(TM) SE Runtime Environment (build 1.8.0_211-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
二、部署Maven
[root@maven ~]# wget https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz [root@maven ~]# tar zxf apache-maven-3.6.1-bin.tar.gz [root@maven ~]# mv apache-maven-3.6.1/ /usr/local/maven [root@maven ~]# vim /etc/profile export MAVEN_HOME=/usr/local/maven export PATH=$PATH:$MAVEN_HOME/bin [root@maven ~]# source /etc/profile # 执行脚本使配置生效 [root@maven ~]# mvn -v # 执行命令出现以下版本信息表示安装成功 Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-05T03:00:29+08:00) Maven home: /usr/local/maven Java version: 1.8.0_211, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8.0_211/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-514.el7.x86_64", arch: "amd64", family: "unix"
1)构建项目进行测试
[root@maven ~]# mkdir /tmp/testdir [root@maven ~]# cd /tmp/testdir/ #执行下面命令进行测试 [root@maven testdir]# mvn archetype:generate -DgroupId=com.zyz.maven.quickstart -DartifactIdk=testapp -DarchetypeArtifactId=maven-archetype-quickstart #忽略一些信息,到以下行时输入执行命令时指定的项目名称,接下来的直接按回车保持默认便可 Define value for property 'artifactId': testapp #当出现以下信息是,表示安装成功,尤为是第一行success [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 21:50 min [INFO] Finished at: 2020-05-02T13:27:26+08:00 [INFO] ------------------------------------------------------------------------ #建立一个maven项目(Java类型),有交互就回车确认,可加-DinteractiveMode=false取消交互过程 #上述命令解释以下: # archetype:generate:建立一个简单的java项目; # archetype 也就是原型,是一个 Maven 插件,准确说是一个项目模板,它的任务是根据模板建立一个项目结构。 #使用 quickstart 原型插件建立一个简单的 java 应用程序 # -DgroupId:组织名,公司网址的反写(反向域名)+项目名称; # -DartifactIdk:项目名或者模块名; # - DarchetypeArtifactId:指定 ArchetypeId,maven-archetype-quickstart,建立一个简单的 Java 应用; # -DinteractiveMode: 是否使用交互模式。
生成的文件测试解释
[root@localhost testdir]# ls # 上述命令执行成功后,会在当前目录下生成以项目名称命名的目录 testapp [root@maven testdir]# cd testapp/ # 进入 [root@maven testapp]# ls #查看目录下生成的文件 pom.xml src [root@maven testapp]# cat pom.xml # pom文件参数解释 project: 根,这是对Project添加一些根元素的约束信息 modelversion:指定当前maven模型的版本号 grouopId:应该是公司名或者组织名。通常来讲groupID有三个部分组成,每一个部分之间以“.”分隔,第一部分是项目的用途,好比用于商业的就是com,用于非商业盈利性组织的就是org,第二部分是公司名,好比tentxun/baidu/alibaba,第三部分是你的项目名 artifactId:能够认为是maven构建的项目名,好比你的项目中有子项目,就可使用“项目名-子项目的命名方式 packaging: 指定生成的格式(jar/war/rar/pom/ear) version:版本号,SNAPSHOT意味快照,说明该项目还在开发中,是不稳定的版本 name:项目的名称, Maven产生的文档用 url:项目主页的url,Maven产生的文档用 dependencies标签:指定开发构建(jar包) JUnit是一个Java语言的单元测试框架
构建项目成功后,也将会在当前用户的宿主目录下生成本地仓库。
[root@maven testapp]# ls ~/.m2/repository/ #查看本地仓库目录结构 antlr asm commons-codec commons-collections commons-io commons-lang jdom net org [root@maven testapp]# ls ~/.m2/repository/antlr/antlr/2.7.7/ antlr-2.7.7.pom antlr-2.7.7.pom.sha1 _remote.repositories
2)Maven配置文件
Maven 的配置文件名称为:setting.xml。它被存放在两个地方:
、/usr/local/maven/conf/settings.xml #安装的目录
、~/.m2/settings.xml #用户的家目录
其中,安装目录配置又是全局配置,用户目录配置被称为用户配置。若是二者都存在,他们的内容将被合并,而且用户范围的settings.xml优先。
默认用户目录不存在配置文件,能够copy maven安装目录下的settings.xml到用户目录。
关于settings.xml文件经常使用的的配置修改以下:
一、修改本地仓库存储路径,默认值是~/.m2/repository 可在settings.xml中的localrepository修改为本身须要的目录;
二、若是构建服务器由于网络故障或者安全问题不能与远程仓库相连,须要离线模式下,设置offline属性,设置为true,默认为false;
三、修改中央仓库服务器,修改配置文件中便签,添加或修改镜像地址;
四、设置代理地址,修改配置文件中proxy标签,定义代理服务器,实现maven的代理。
因为中央仓库服务器是国外的,在国内使用的话,下载比较慢,因此建议国内用户使用阿里云仓库地址
3)配置使用阿里云仓库地址
[root@maven testapp]# cd /usr/local/maven/conf/ [root@maven conf]# vim settings.xml ............................. <url>http://my.repository.com/repo/path</url> </mirror> --> # 跳转到158行,写入以下内容 <mirror> <id>aliyun</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>https://maven.aliyun.com/nexus/content/groups/public/</url> </mirror> </mirrors> # 在此行上面写入 #mirror就是镜像,主要提供一个方便地切换远程仓库地址的途径 #<mirrorOf>central</mirrorOf>里是要替代的仓库的id。代理原有仓库,若是填写*表示替换全部仓库
4)Maven经常使用命令
[root@maven testapp]# pwd #确认当前目录是以前构建的项目下 /tmp/testdir/testapp [root@maven testapp]# mvn compile # 编译(在编译的过程当中,能够看到使用的是阿里云的仓库) [INFO] BUILD SUCCESS # 出现此行说明编译成功 #全部命令都同样,只要最后几行有上述信息,就表示执行成功 [root@maven testapp]# ls target/ #会看到目录下会生成新的目录target classes maven-status #target:打包输出目录,如打包好的jar或war文件; #target/classes:编译输出目录; [root@maven testapp]# mvn test # 测试命令 [root@maven testapp]# ls target/test-classes/ com #target/test-classes:测试编译输出目录 [root@maven testapp]# mvn clean #清理命令(就是将编译和测试生成的目录删除) [root@maven testapp]# ls # 能够看到target目录已经没了 pom.xml src [root@maven testapp]# mvn package # 打包命令 [root@maven testapp]# ls target/ # 会生成一个jar包 classes maven-archiver maven-status surefire-reports testapp-testapp.jar test-classes [root@maven testapp]# mvn install #安装命令(做用是将压缩文件jar包或者war包上传到本地仓库) # 直接使用maven install命令对项目进行上传到本地仓库, # 那么前面全部的步骤将会自动执行,好比源代码的编译、打包等等。 [root@maven testapp]# mvn deploy #发布(将包上传到私服,如今我这里尚未私服,因此会失败)
5)mvn命令的生命周期
maven基于构建生命周期这个中心概念,这意味着构建和分发特定项目的过程被明肯定义,具体以下:
6)构建一个web项目,打出war包,并部署到Tomcat
[root@maven testdir]# mvn archetype:generate -DgroupId=cn.test.testweb -DartifactId=testweb -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false #构建web项目 #生成的目录结构以下: [root@maven testdir]# ls testweb/ pom.xml src [root@maven testdir]# cat testweb/src/main/webapp/index.jsp <html> <body> <h2>Hello World!</h2> </body> </html> [root@maven testdir]# cd testweb/ #进入项目目录下 [root@maven testweb]# mvn package #打包为war包 [root@maven testweb]# ls target/ # 会生成一个target目录 classes maven-archiver testweb testweb.war #将生成的war包移动到Tomcat的网页根目录(webapps)下,它将自动解压, #而后便可访问Tomcat测试生成的war包 #这里自行部署Tomcat (可参考:https://blog.51cto.com/14227204/2466232) [root@maven testweb]# mv target/testweb.war /usr/local/tomcat/webapps/ [root@maven testweb]# /usr/local/tomcat/bin/startup.sh [root@maven testweb]# ls /usr/local/tomcat/webapps/ # 能够看到启动以后自行解压 docs examples host-manager manager ROOT testweb testweb.war
客户端访问移动到Tomcat网页根目录下的war包:
Nexus介绍
Nexus 是Maven仓库管理器,若是咱们使用Maven,咱们能够从Maven中央仓库下载所须要的构件(artifact),但这一般没有公司这么干,通常都是在本地架设一个Maven仓库服务器,在代理远程仓库的同时维护本地仓库,以节省带宽和时间,Nexus就能够知足这样的须要。此外,它还提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的UI是一个extjs的REST客户端,它占用较少的内存,基于简单文件系统而非数据库。这些优势使其日趋成为最流行的Maven仓库管理器。
Nexus不是Maven的核心概念,它仅仅是一种衍生出来的特殊的Maven仓库。对于Maven来讲,仓库只有两种:本地仓库和远程仓库。
本地仓库就是咱们在maven的setting.xml中配置的本地仓库地址。因为最原始的本地仓库是空的,Maven必须知道至少一个可用的远程仓库,才能在执行Maven命令的时候下载到须要的构件。中央仓库是maven默认的远程仓库。
当公司架构存在私服的工做流程以下:
私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。有了私服以后,当 Maven 须要下载构件时,直接请求私服,私服上存在则下载到本地仓库;不然,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。
Nexus的功能以下:
一、节省外网带宽。大量对于外部仓库的重复请求会消耗带宽,利用私服代理外部仓库,能够消除对外的重复构件下载,下降带宽的压力。
二、加速Maven构建。加速Maven构建。不停地链接请求外部仓库十分的耗时,Maven在执行构建的时候不停地检查远程仓库的数据。利用私服,Maven只检查局域网的数据,提升构建的速度。
三、部署第三方构件。部署第三方构件。当某个构件没法从任何一个外部远程仓库得到。创建私服以后,即可以将这些构件部署到私服,供内部的Maven项目使用。
四、提升稳定性,加强控制。提升稳定性,加强控制。Maven构建高度依赖于远程仓库,所以,当网络不稳定的时候,Maven构建也会变得不稳定,甚至没法构建。私服缓存了大量构建,即便暂时没有外网,Maven也能够正常的运行。
五、下降中央仓库的负荷。下降中央仓库的负荷。使用私服能够避免不少对中央仓库的重复下载,下降中央仓库的压力。
一、开始部署Nexus
[root@maven ~]# mkdir /usr/local/nexus [root@maven ~]# tar zxf nexus-3.17.0-01-unix.tar.gz -C /usr/local/nexus/ #启动nexus必须使用nexus用户,不可使用权限太高的用户,好比root,不然会启动失败 [root@maven ~]# useradd nexus [root@maven ~]# chown -R nexus:nexus /usr/local/nexus/ [root@maven ~]# ls /usr/local/nexus/ nexus-3.17.0-01 # 这是应用目录 sonatype-work # 这是工做目录,存放镜像仓库 #运行内存和工做目录nexus-3.17.0-01/bin/nexus.vmoptions (修改对应字段便可) #运行监听地址和端口nexus-3.17.0-01/etc/nexus-default.properties [root@maven ~]# ln -s /usr/local/nexus/nexus-3.17.0-01/bin/nexus /usr/local/bin/ #建立命令软链接 #切换至nexus用户,并启动nexus服务,若是使用root用户,会由于权限太高而启动失败 [root@maven ~]# su nexus [nexus@maven root]$ nexus start Starting nexus [root@maven ~]# netstat -anput | grep 8081 tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 4687/java
启动nexus后,便可访问服务器IP+8081端口:
根据下述提示的路径,查看密码:
[root@maven ~]# cat /usr/local/nexus/sonatype-work/nexus3/admin.password 5af5b7df-3f84-4987-a1fe-0b9c0933d3ad
进行登陆,默认的用户名为admin,密码就是咱们上面查看到的:
更改admin的密码:
建立角色
点击建立:
建立用户
查看默认仓库类型
仓库类型介绍:
- group(仓库组类型):又叫组仓库,用于方便开发人员,本身设定的仓库
- hosted(宿主类型):内部项目的发布仓库(内部开发人员发布上去存放的仓库)
- proxy(代理类型):从远程中央仓库中寻找数据的仓库(能够点击对应的仓库的Configuration页签下Remote Storage Location属性的值,即被代理的远程仓库的路径)
- virtual(虚拟类型):虚拟仓库(这个基本上用不到)
- Public Repositories下的仓库类型
- 3rd party: 没法从公共仓库得到的第三方发布版本的构件仓库,即第三方依赖的仓库,这个数据一般是由内部人员自行下载以后发布上去;
- Apache Snapshots: 用了代理ApacheMaven仓库快照版本的构件仓库
- Central: 用来代理maven中央仓库中发布版本构件的仓库
- entral M1 shadow: 用于提供中央仓库中M1格式的发布版本的构件镜像仓库
- Codehaus Snapshots: 用来代理CodehausMaven 仓库的快照版本构件的仓库
- Releases: 内部的模块中release模块的发布仓库,用来部署管理内部的发布版本构件的宿主类型仓库;release是发布版本;
- Snapshots:发布内部的SNAPSHOT模块的仓库,用来部署管理内部的快照版本构件的宿主类型仓库;snapshots是快照版本,也就是不稳定版本
开启release的重复发版权限
开发中须要重复发版,则须要开启release类型仓库的对应权限设置allow redeploy。以下:
设置代理仓库(阿里云maven仓库)
阿里云仓库的URL:https://maven.aliyun.com/nexus/content/groups/public/
填写上述两个内容后,点击页面下边的create repository 建立完成以后能够看到新增长了阿里云库。
将添加的阿里云Proxy加入默认group中:
保存后,再次刷新页面,便可看到当前的Nexus地址:
关于上述配置的常见使用场景介绍以下:
- release发版仓库(nexus默认已创建:maven-releasees)
- snapshot 测试中心快照仓库(nexus默认已创建:maven-snapshots)
- central 中央仓库 (nexus默认已创建:maven-central)
- 关于组:在nexus中能够创建组,将不一样类型仓库集合在一块儿(nexus默认已创建:maven-public)
- 场景一: 自定义新建proxy类型仓库,在maven配置中分别配置不一样调用地址,或是将自定义新建的proxy仓库统一加入一个组,在maven配置中调用一个地址
- 场景二: 使用maven已经创建好的proxy仓库,且使用已创建好的组(maven-public)配置maven调用地址
- 场景一和场景二本质上讲没有什么变化,根据公司开发习惯和需求进行配置便可
[root@maven conf]# pwd /usr/local/maven/conf [root@maven conf]# vim settings.xml ................... <mirror> <id>nexus-testconf</id> <mirrorOf>*</mirrorOf> <name>nexus testconf</name> <url>http://192.168.171.134:8081/repository/maven-public/</url> </mirror> #上面的URL就是在nexus上查看到的URL </mirrors> ..........................#省略部份内容 #跳转至260行左右,写如下内容 <profile> <id>testconf</id> <repositories> <repository> <id>nexus</id> <url>http://192.168.171.134:8081/repository/maven-public/</url> <releases> <enable>true</enable> </releases> <snapshots> <enable>true</enable> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>nexus</id> <url>http://192.168.171.134:8081/repository/maven-public/</url> <releases> <enable>true</enable> </releases> <snapshots> <enable>true</enable> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> #在这行上面添加以上内容,这行大概是在260行左右 <activeProfiles> <activeProfile>testconf</activeProfile> </activeProfiles> </settings> #将 <activeProfiles>字段写在settings字段上面
一、建立一个maven项目进行测试
[root@maven conf]# rm -rf ~/.m2/ #先删除本地仓库的缓存 [root@maven testdir]# mvn archetype:generate -DgroupId=cn.zyz.zyzweb -DartifactId=zyzweb -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false #构建项目,能够看到在构建的过程当中使用的是nexus私服地址。 [root@maven testdir]# ls zyzweb/ pom.xml src [root@maven testdir]# cd zyzweb/ [root@maven zyzweb]# mvn package #将项目打包 [root@maven zyzweb]# ls #打包后,会生成target目录 pom.xml src target
查看nexus中缓存的文件(若没有缓存文件,下面有解决办法)
若是在以上页面中,并无看到缓存的文件,是由于当前没有写入nexus的权限,能够进行如下操做:
进行以上设置后,再次删除本地宿主目录下的缓存文件,从新构建项目并打包,便可看到nexus上的缓存文件了。
二、配置认证,将打包好的项目上传到nexus中
[root@maven ~]# vim /usr/local/maven/conf/settings.xml #搜索“server”字段 <server> <id>deploymentRepo</id> <username>repouser</username> <password>repopwd</password> </server> --> #定位到该行,写入如下内容 <server> <id>test-nexus</id> <username>testdev</username> <password>123.com</password> </server>
修改项目的pod.xml文件:
[root@maven zyzweb]# pwd /tmp/testdir/zyzweb [root@maven zyzweb]# ls pom.xml src [root@maven zyzweb]# vim pom.xml #编辑配置文件 .....................#省略部份内容,如下内容是手动添加的 <distributionManagement> <snapshotRepository> <id>test-nexus</id> #这里的ID必须和上面settings文件中配置认证的ID一致 <name>Nexus Snapshot</name> <url>http://192.168.171.134:8081/repository/maven-snapshots/</url> #上面是修订版本的URL,可在nexus的web界面查看 </snapshotRepository> <repository> <id>test-nexus</id> <name>Nexus releases</name> <url>http://192.168.171.134:8081/repository/maven-releases/</url> #上面是发行版本的URL,一样在web界面的Repositories中能够查看到 </repository> </distributionManagement> </project> #在最后一行上面添加以上内容 [root@maven zyzweb]# mvn deploy # 上传到私服
在web界面确认上传成功:
将全部的内容展开,便可看到如下内容:
若是在部署过程当中,出现了错误,首先先检查一下配置文件setting.xml的帐号密码有没有与nexus建立的用户密码相同,其次再检查setting.xml里的id标签和pom.xml文件中的id标签是否相同,不一样会报401(没有权限)的错误。
三、上传到maven-release仓库
[root@maven zyzweb]# pwd /tmp/testdir/zyzweb [root@maven zyzweb]# vim pom.xml <version>1.0-SNAPSHOT</version> #将上面这行的“SNAPSHOT”去掉,更改后以下: <version>1.0</version> #更改后保存退出便可 [root@maven zyzweb]# mvn deploy
在web界面中查看,以下:
展开全部节点,便可看到如下内容:
配置以下(定义名称并激活),而后自行拖到页面的最下方,点击添加便可
Maven添加第三方仓库地址(全局配置)
#编辑主配置文件 [root@maven zyzweb]# vim /usr/local/maven/conf/settings.xml #在以前的profiles中,填写如下内容 <repository> <id>3rdnexus</id> <url>http://192.168.171.134:8081/repository/3rd/</url> <release> <enable>true</enable> </release> <snapshots> <enable>true</enable> </snapshots> </repository> </profiles> #添加到这个Profiles标签上面 #在以前的认证字段,再添加一个认证 <server> <id>test-nexus</id> <username>testdev</username> <password>123.com</password> </server> <server> <id>3rdnexus</id> #此ID要与profile中的ID对应 <username>testdev</username> <password>123.com</password> </server> [root@maven testdir]# ls # 上传这个jar包 aliyun-sdk-oss-2.6.1.jar [root@maven testdir]# mvn deploy:deploy-file -DgroupId=com.aliyun.oss -DartifactId=aliyun-sdk-oss -Dversion=2.6.1 -Dpackaging=jar -Dfile=/tmp/testdir/aliyun-sdk-oss-2.6.1.jar -Durl=http://192.168.171.134:8081/repository/3rd/ -DrepositoryId=3rdnexus
查看本地上传的jar包: