centos-Maven库搭建

2017-09-07  本文已影响0人  飞扬小米

Nexus是Maven仓库管理器,也可以叫Maven的私服。Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用Nexus你可以只在一个地方就能够完全控制访问和部署在你所维护仓库中的每个Artifact。Nexus是一套“开箱即用”的系统不需要数据库,它使用文件系统加Lucene来组织数据。

Nexus不是Maven的核心概念,它仅仅是一种衍生出来的特殊的Maven仓库。对于Maven来说,仓库只有两种:本地仓库和远程仓库。

image.png
本地仓库就是我们在maven的setting.xml中配置的本地仓库地址。由于最原始的本地仓库是空的,Maven必须知道至少一个可用的远程仓库,才能在执行Maven命令的时候下载到需要的构件。

私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。

image.png

2016年4月6日Nexus 3.0版本发布,相较2.x版本有了很大的改变:

对低层代码进行了大规模重构,提升性能,增加可扩展性以及改善用户体验。

下载地址:http://www.sonatype.com/downl...

官方文档:http://books.sonatype.com/nex...

PDF文档:http://books.sonatype.com/nex...

环境要求

Windows / Linux / Mac
Java JDK 8+
Apache Maven 3.0+

安装步骤

示例基于Ubuntu 16.04 LTS环境,安装前检查JDK:

java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode)

1. 创建管理用户

该步骤不是必须的,但为了更好的管理和维护,建议创建一个管理用户。

使用root权限创建一个用户
useradd  nexus
passwd   nexus

2. 解压和安装

上传不管用户通过wget也好还是smb上传也好,不再详述。解压相应的下载包。

LICENSE.txt  NOTICE.txt  bin  deploy  etc  lib  public  system
# bin: 启动脚本和启动时的配置文件
# data: 数据存储目录
# etc: 配置文件
# lib: Apache Karaf的二进制包
# public: 公共资源
# system: 系统依赖的组件和插件

# 指定JDK版本(可选)
vim nexus-3.5.1-02/bin/nexus
INSTALL4J_JAVA_HOME_OVERRIDE="/usr/lib/jvm/java-8-oracle"

# 修改使用的用户(不建议使用root用户)
vim bin/nexus.rc
run_as_user="nexus"

3. 运行

./nexus-3.5.1-02/bin/nexus start
# 可选的命令:{start|stop|run|run-redirect|status|restart|force-reload}

4. 验证安装

打开浏览器输入:http://127.0.0.1:8081

image.png

配置

  1. JVM配置(可选)
cat nexus-3.0.1-01/bin/nexus.vmoptions
  1. 配置端口号(可选,推荐为默认端口号:8081)
vim nexus-3.0.1-01/etc/org.sonatype.nexus.cfg
application-port=9081

3.配置数据存储目录(可选)

vim nexus-3.0.1-01/bin/nexus.vmoptions
# 默认存储目录
-Dkaraf.data=data
-Djava.io.tmpdir=data/tmp
  1. 配置代理(可选)
Apache httpd.
nginx.
  1. 配置SSL(可选)

参考
https://segmentfault.com/a/1190000005966312

仓库介绍

1. 代理仓库(Proxy Repository)

顾名思义是代理第三方仓库的,如:

版本策略(Version Policy):

布局策略(Layout Policy):

2. 宿主仓库(Hosted Repository)

存储本地上传的组件和资源的,如:

部署策略(Deployment Policy):

3. 仓库组(Repository Group)

通常包含了多个代理仓库和宿主仓库,在项目中只要引入仓库组就可以下载到代理仓库和宿主仓库中的包,如:

与Maven集成

1. Servers 配置认证信息

在Maven settings.xml中添加Nexus认证信息:

<server>
  <id>nexus-releases</id>
  <username>admin</username>
  <password>admin123</password>
</server>

<server>
  <id>nexus-snapshots</id>
  <username>admin</username>
  <password>admin123</password>
</server>

Release版本与Snapshot版本的区分:

Release: 4.3.0
Snapshot: 4.3.0-SNAPSHOT

在项目POM.xml中设置的版本号添加SNAPSHOT标识的都会发布为SNAPSHOT版本,没有SNAPSHOT标识的都会发布为Release版本。
SNAPSHOT版本会自动加一个时间作为标识,如:4.3.0-SNAPSHOT发布后为变成4.3.0-SNAPSHOT-20160712.114532-1.jar

2. 配置自动化部署构件

在POM.xml中添加以下代码:

<distributionManagement>  
  <repository>  
    <id>nexus-releases</id>  
    <name>Nexus Release Repository</name>  
    <url>http://127.0.0.1:8081/repository/maven-releases/</url>  
  </repository>  
  <snapshotRepository>  
    <id>nexus-snapshots</id>  
    <name>Nexus Snapshot Repository</name>  
    <url>http://127.0.0.1:8081/repository/maven-snapshots/</url>  
  </snapshotRepository>  
</distributionManagement> 

注意事项:

3. 部署到Nexus仓库

mvn deploy

4. 上传第三方JAR包

Nexus 3.0不支持页面上传,可使用maven命令:

# 如第三方JAR包:aliyun-sdk-oss-2.2.3.jar
mvn deploy:deploy-file 
  -DgroupId=com.aliyun.oss 
  -DartifactId=aliyun-sdk-oss 
  -Dversion=2.2.3 
  -Dpackaging=jar 
  -Dfile=D:\aliyun-sdk-oss-2.2.3.jar 
  -Durl=http://127.0.0.1:8081/repository/maven-3rd/ 
  -DrepositoryId=nexus-releases

注意事项:

5. 使用代理中央仓库

<repositories>
    <repository>
        <id>nexus</id>
        <name>Nexus Repository</name>
        <url>http://127.0.0.1:8081/repository/maven-public/</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
        <releases>
            <enabled>true</enabled>
        </releases>
    </repository>
</repositories>
<pluginRepositories>
    <pluginRepository>
        <id>nexus</id>
        <name>Nexus Plugin Repository</name>
        <url>http://127.0.0.1:8081/repository/maven-public/</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
        <releases>
            <enabled>true</enabled>
        </releases>
    </pluginRepository>
</pluginRepositories>

注意事项:

参考

https://segmentfault.com/a/1190000005966312

上一篇下一篇

猜你喜欢

热点阅读