一、Maven私服搭建步骤
参考博文:
安装nexus步骤
deploy命令
上传jar过程报400错误解决:(version版本号,去除snapshoot)
Linux环境安装Nexus
1 Linux环境安装Nexus
Nexus可以做Maven私服,私服不是Maven的核心概念,它仅仅是一种衍生出来的特殊的Maven仓库。有三种专门的Maven仓库管理软件可以用来帮助大家建立私服:
Apache基金会的Archiva、JFrog的Artifacotory和Sonatype的Nexus,Archiva是开源的,Artifacotory和Nexus的核心也是开源的。
如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下载构件无疑加大了仓库的负载和浪费了外网带宽,如果网速慢的话,还会影响项目的进程。很多情况下项目的开发都是在内网进行的,连接不到maven仓库怎么办呢?开发的公共构件怎么让其它项目使用?这个时候我们不得不为自己的团队搭建属于自己的maven私服,这样既节省了网络带宽也会加速项目搭建的进程,当然前提条件就是你的私服中拥有项目所需的所有构件。
1.1 下载nexus软件
下载nexus安装包之后解压进入nexus目录:
创建文件夹:mkdir -p /usr/local/software/nexus
切换目录:cd /usr/local/software/nexus
wget "https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.14.3-02-bundle.tar.gz"
tar xfvz nexus-2.14.3-02-bundle.tar.gz
cd nexus-2.14.3-02-bundle
解压之后就会看到两个目录:
nexus-2.11.4-01:里面是nexus的运行环境和应用程序。
sonatype-work:里面是我们后面要对nexus进行一些配置的地方,像索引和起始的仓库和端口等都可以在这里面配置。
1.2 启动nexus
1、配置环境变量
执行命令:
export RUN_AS_USER=root
export JAVA_HOME=/usr/local/software/jdk1.8.0_66
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=.:$JAVA_HOME/bin:$RUN_AS_USER:$PATH
刷新环境变量:source /etc/profile
2、启动nexus
执行命令:
cd /usr/local/software/nexus
nexus-2.14.3-02/bin/nexus start
查看日志:tail -100f/usr/local/software/nexus/nexus-2.14.3-02/logs/wrapper.log
1.3 nexus管理界面
1、访问页面:192.168.1.131:8081/nexus
可以看如下界面:
注意:nexus的默认端口是8081,后面可以修改。
用默认账户和密码登录
账户:admin
密码:admin123
2、界面管理
3rd party、Snapshots、Releases这三个,分别用来保存第三方jar、项目组内部的快照、项目组内部的发布版。
3、中央仓库自动更新索引
4、将第三方jar上传到nexus
5、上传之后搜索
这样基本maven私服就搭建完成了,并且上传了自己的jar包。
私服Nexus搭建完毕之后,由于网络原因,有时候会出现索引更新不了的问题,这里给出一种离线更新索引的方式。
二、下载索引(采用在线下载)
下载索引
nexus索引好比目录,只要我们更新好索引,就可以在nexus系统中去查找,下载我们需要的jar包,并且对应的groupId,artifactId,version都可以方便的查到。如图:
刚刚搭建的nexus,索引会是空的,所以需要我们去下载索引。
下载索引有两种方式
第一种:在线下载索引。把Centra仓库,点击仓库下面的configuration下把DownloadRemote Indexes修改为true。如下图:
然后在Central仓库上右击,选择Pepari Index,这样Nexus就会去下载索引文件。
第二种:离线下载索引。
由于索引文件很大,在线下载会很漫长,所以采用离线下载会很快。从网上找到一个nexus索引仓库包下载下来,如图:
下载完成以后解压,把文件夹中的东西拷贝到sonatype-work/nexus/indexer/central-ctx下面:
重新启动一下nexus。
能够很快的把索引下载过来。如图:
如果中间添加了新的jar包想更新索引,点中右击update index就行了。如图:
三、项目中配置Nexus仓库
maven的setting.xml文件配置(本地Maven仓库中的配置文件)
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!--存放本地仓库的地方-->
<localRepository>E:\Maven\MavenRepository</localRepository>
<!--私服的验证信息-->
<servers>
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
<!--maven对全部仓库的访问全部拦截到私服的public仓库中去,如果私服关闭,那么久不能访问中央工厂了-->
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<name>Local Repository</name>
<url>http://10.100.1.145:8081/nexus/content/groups/public</url>
</mirror>
</mirrors>
<!--配置仓库的一些信息,其主要作用是用来覆写central中央仓库的一些配置信息-->
<profiles>
<profile>
<id>central</id>
<repositories>
<repository>
<id>central</id>
<name>Central</name>
<!-- 该 url 没有意义,可以随便写,但必须有。 -->
<url>http://*</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>local private nexus</name>
<url>http://10.100.1.145:8081/nexus/content/groups/public</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<!--激活上面配置的仓库信息-->
<activeProfiles>
<activeProfile>central</activeProfile>
</activeProfiles>
</settings>
项目中pom.xml配置
<repositories>
<repository>
<id>elastic-lucene-snapshots</id>
<name>Elastic Lucene Snapshots</name>
<url>http://s3.amazonaws.com/download.elasticsearch.org/lucenesnapshots/00142c9</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>false</enabled></snapshots>
</repository>
<repository> <!-- 发布版本仓库 -->
<id>releases</id>
<name>Nexus Release Repository</name>
<url>http://10.100.1.145:8081/nexus/content/repositories/releases/</url>
</repository>
<repository> <!-- 快照版本仓库 -->
<id>snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://10.100.1.145:8081/nexus/content/repositories/snapshots/</url>
</repository>
<repository> <!--第三方发布版本仓库 -->
<id>thirdparty</id>
<name>Nexus Thirdparty Repository</name>
<url>http://10.100.1.145:8081/nexus/content/repositories/thirdparty/</url>
</repository>
</repositories><!-- 项目部署到私服配置 -->
<distributionManagement> <!-- 远程部署管理信息 -->
<repository> <!--部署项目产生的构件到远程仓库需要的信息 -->
<id>releases</id>
<name>Nexus Release Repository</name>
<url>http://10.100.1.145:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository> <!-- 如果没有配置该元素,默认部署到repository元素配置的仓库 -->
<id>snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://10.100.1.145:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
四、上传jar包
1、java项目自动上传:
自动将pom中所有依赖包下载并上传到Maven私服中
在terminate窗口执行命令:mvn deploy;
2、使用deploy命令上传:
mvn deploy:deploy-file -Dmaven.test.skip=true -Dfile=E:\scmd-questionnaire\target\scmd-questionnaire-1.0.jar -DgroupId=scmd-questionnaire -DartifactId=scmd-questionnaire -Dversion=1.0 -Dpackaging=jar -DrepositoryId=releases -Durl=http://10.100.1.145:8081/nexus/content/repositories/releases/