跳至主要內容

搭建Nexus

知识库运维技巧开发搭建Nexus大约 2 分钟

文档

CentOS7 安装 Nexus

########################
## Nexus的下载地址:https://www.sonatype.com/download-oss-sonatype
## 官方安装文档:https://help.sonatype.com/repomanager3/installation/installation-methods
########################

# 安装前确保已经安装JDK和maven
java -version
mvn -v
# 下载地址
wget https://sonatype-download.global.ssl.fastly.net/repository/repositoryManager/3/nexus-3.25.1-04-unix.tar.gz
# 解压文件
tar xvf nexus-3.25.1-04-unix.tar.gz -C /usr/local/lib/
ll /usr/local/lib/nexus-3.25.1-04
# 修改端口,默认是8081
#sed -i 's/application-port=.*/application-port=8081/g' /usr/local/lib/nexus-3.25.1-04/etc/nexus-default.properties
# 修改启动用户,(默认即可)
sed -i 's/.*run_as_user=.*/run_as_user="root"/g' /usr/local/lib/nexus-3.25.1-04/bin/nexus.rc
# 可修改jvm参数(默认即可)
#vi /usr/local/lib/nexus-3.25.1-04/bin/nexus.vmoptions
# 开放8081端口
firewall-cmd --zone=public --add-port=8081/tcp --permanent && firewall-cmd --reload
# 启动nexus,也可选择下面的service管理方式启动
cd /usr/local/lib/nexus-3.25.1-04/bin && ./nexus start
# 默认admin的密码,重置以后,改文件消失
cat /usr/local/lib/sonatype-work/nexus3/admin.password
# 访问地址 192.16.18.99:8081 默认用户名admin

设置开机自启(推荐)

https://help.sonatype.com/repomanager3/installation/system-requirementsopen in new window

cat >> /usr/lib/systemd/system/nexus3.service << EOF
[Unit]
Description=nexus service
After=network.target

[Service]
Type=forking
Environment="JAVA_HOME=/usr/local/lib/jdk1.8.0_201/"
ExecStart=/usr/local/lib/nexus-3.25.1-04/bin/nexus start
ExecReload=/usr/local/lib/nexus-3.25.1-04/bin/nexus restart
ExecStop=/usr/local/lib/nexus-3.25.1-04/bin/nexus stop
User=root
Restart=on-abort

[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload && systemctl enable nexus3.service
systemctl start nexus3.service && systemctl status nexus3.service

全局配置下载依赖(即项目 pom 无需配置)

  • 在 maven 的 setting.xml 文件中配置私服配置,这种方式配置后所有本地使用该配置的 maven 项目的 pom 文件都无需配置私服下载相关配置

    <profiles>
        <profile>
            <id>mymaven</id>
                <repositories>
                <!-- 私有库地址-->
                <repository>
                <id>nexus</id>
                <url>http://192.16.18.99:8081/repository/maven-public/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <!--插件库地址-->
                <pluginRepository>
                <id>nexus</id>
                <url>http://192.16.18.999:8081/repository/maven-public/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>
    </profiles>
    
  • 激活使用上面的配置

    <!--激活profile-->
    <activeProfiles>
        <activeProfile>mymaven</activeProfile>
    </activeProfiles>
    
  • 指定镜像代理为我们的私服

    <mirror>
        <id>nexus-myself</id>
        <!--*指的是访问任何仓库都使用我们的私服-->
        <mirrorOf>*</mirrorOf>
        <name>Nexus myself</name>
        <url>http://192.16.18.99:8081/repository/maven-public/</url>
    </mirror>
    

单独项目下载依赖(即项目 pom 文件中配置)

这种配置是修改单个项目的 pom 文件,无需修改 maven 的 setting 配置(尽管如此说,但是如果 setting.xml 中配置了 mirror 标签,并且 mirrorOf 为*或者私服地址,还是会被拦截,被代理指向代理地址)

<repositories>
  <repository>
    <id>nexus</id>
    <url>http://192.16.18.99:8081/repository/maven-public/</url>
    <releases>
      <enabled>true</enabled>
    </releases>
    <snapshots>
    <enabled>true</enabled>
    </snapshots>
  </repository>
</repositories>

本地 maaven 开发的项目上传配置

  1. maven 的 setting 文件配置

    <servers>
        <server>
            <id>nexus-releases</id>
            <username>admin</username>
            <password>admin</password>
        </server>
        <server>
            <id>nexus-snapshots</id>
            <username>admin</username>
            <password>admin</password>
        </server>
    </servers>
    
  2. 项目中的 pom 文件配置

    <distributionManagement>
     <repository>
      <id>nexus-releases</id>
      <name>Nexus Release Repository</name>
      <url>http://192.16.18.99:8081/repository/maven-releases/</url>
     </repository>
     <snapshotRepository>
      <id>nexus-snapshots</id>
      <name>Nexus Snapshot Repository</name>
      <url>http://192.16.18.99:8081/repository/maven-snapshots/</url>
     </snapshotRepository>
    </distributionManagement>
    
  3. 执行 maven 的 deploy 命令,即可上传到 maven 私服。