一、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

怎么搭建maven内网_maven

 

     解压之后就会看到两个目录:

         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

怎么搭建maven内网_Nexus_02

查看日志:tail -100f/usr/local/software/nexus/nexus-2.14.3-02/logs/wrapper.log

 

1.3 nexus管理界面

1、访问页面:192.168.1.131:8081/nexus

可以看如下界面:

怎么搭建maven内网_Maven_03

 

注意:nexus的默认端口是8081,后面可以修改。

用默认账户和密码登录

账户:admin

密码:admin123

 

2、界面管理

3rd party、Snapshots、Releases这三个,分别用来保存第三方jar、项目组内部的快照、项目组内部的发布版。

怎么搭建maven内网_上传_04

 

3、中央仓库自动更新索引

怎么搭建maven内网_上传_05

 

4、将第三方jar上传到nexus

怎么搭建maven内网_怎么搭建maven内网_06

 

5、上传之后搜索

怎么搭建maven内网_怎么搭建maven内网_07

这样基本maven私服就搭建完成了,并且上传了自己的jar包。

私服Nexus搭建完毕之后,由于网络原因,有时候会出现索引更新不了的问题,这里给出一种离线更新索引的方式。 

二、下载索引(采用在线下载)

下载索引

nexus索引好比目录,只要我们更新好索引,就可以在nexus系统中去查找,下载我们需要的jar包,并且对应的groupId,artifactId,version都可以方便的查到。如图:

怎么搭建maven内网_Maven_08

 

刚刚搭建的nexus,索引会是空的,所以需要我们去下载索引。

 

下载索引有两种方式

第一种:在线下载索引。把Centra仓库,点击仓库下面的configuration下把DownloadRemote Indexes修改为true。如下图:

怎么搭建maven内网_上传_09

 

然后在Central仓库上右击,选择Pepari Index,这样Nexus就会去下载索引文件。

第二种:离线下载索引。

由于索引文件很大,在线下载会很漫长,所以采用离线下载会很快。从网上找到一个nexus索引仓库包下载下来,如图:

怎么搭建maven内网_Nexus_10

下载完成以后解压,把文件夹中的东西拷贝到sonatype-work/nexus/indexer/central-ctx下面:

怎么搭建maven内网_Maven_11

 

重新启动一下nexus。

能够很快的把索引下载过来。如图:

怎么搭建maven内网_maven_12

如果中间添加了新的jar包想更新索引,点中右击update index就行了。如图:

怎么搭建maven内网_怎么搭建maven内网_13

 

三、项目中配置Nexus仓库

mavensetting.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/