前言
本来以为搭建一个nexus随随便便就好了,但是遇到了最新版本根本没办法在jdk17下面正常运行—起码我调了一下不知道怎么运行,我才知道。。。不升级版本其实是很有道理的。
这一篇是最新版本的尝试:
在ubuntu上搭建nexus私有仓库[失败草稿]
下面一篇文章让我醍醐灌顶:
解决Nexus 3.XX Jdk版本问题(亲测有效)
新的JDK不行,那我用旧的还不行吗?
版本指定:
openjdk-1.8
过程
安装jdk1.8:
apt-get install openjdk-8-jre
好了:
在官网下载 neuxs:
wget https://sonatype-download.global.ssl.fastly.net/repository/downloads-prod-group/3/nexus-3.67.1-01-unix.tar.gz
我本地下载速度有点慢,看来需要一些科技手段了。
下载完成后,请上传到服务器等待配置:
在服务器上面,解压缩:
tar -zxvf nexus-3.67.1-01-unix.tar.gz
ls
------重命名nexus文件夹
mv nexus-3.67.1-01 /usr/local/nexus3
cd /usr/local
创建软连接
sudo ln -s nexus3 nexus
mkdir /usr/local/sonatype-work/
好了,先进行一部分配置:
vim bin/nexus.vmoptions
修改一下参数,防止占用内存过大。
如下图:
可以改小一点:
修改默认访问端口以及根目录:
vim etc/nexus-default.properties
注意,默认端口8081很多人用的,使用前请检查一下是否已经占用了:
lsof -i:8081
给nexus分配账号:
ps:如果不分配账号那么是无法启动的,例如:
创建 nexus 用户
# sudo useradd nexus -M -s /sbin/nologin
注意,这条命令后续会出问题的,在我上一篇文章已经将坑都排出来了:
https://blog.csdn.net/cdnight/article/details/80673110
所以,正式的命令是新建普通的账号:
sudo useradd nexus -m -s /bin/bash
授权
chown -R nexus:nexus /usr/local/nexus
chown -R nexus:nexus /usr/local/sonatype-work/
打开 /usr/local/nexus/bin/nexus.rc 文件, 去掉 run_as_user 变量的注释
sudo vim /usr/local/nexus/bin/nexus.rc
run_as_user="nexus"
好了,测试一下能否正常运行:
/usr/local/nexus/bin/nexus run
结果:
这怕是jdk版本的问题了。。。
怎么做都不行,下面参考一下一位兄弟的文章:
解决Nexus 3.XX Jdk版本问题(亲测有效)
所以,nexus的新版本必须使用jdk1.8,刚刚下载的openjdk1.8就是在这里用的
在nexus脚本上面覆盖jdk位置:
就是:
-- 添加这一行上去。
INSTALL4J_JAVA_HOME_OVERRIDE="/usr/lib/jvm/java-1.8.0-openjdk-amd64"
测试一下能否正常运行:
bin/nexus run
有:
无法启动成功,gc的值比我分配给它的要多了。。怎么这东西这么吃内存的的???
改改参数:
变更为512m,然后:
启动成功。
好了,给nexus添加一下系统服务,方便开机启动。
/lib/systemd/system 创建 nexus.service
内容:
[Unit]
Description=Nexus3服务
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nexus/bin/nexus start
## ExecReload=/usr/local/@projectName@/service.sh restart
ExecStop=/usr/local/nexus/bin/nexus stop
PrivateTmp=True
[Install]
WantedBy=multiVersions-user.target
ps:如果你有域名的话,也可以用域名+nginx 来导向nexus。
nexus3中央仓库改为阿里云
参考:这里写链接内容
找到中央仓库
然后修改成:
http://maven.aliyun.com/nexus/content/groups/public/
idea使用私服maven及对应配置
参考:
这里写链接内容
首先,新建一个maven项目—自己新建吧。
然后,
看到本机的maven 配置文件,
打开来,然后:
添加我们的maven私服及servers—用来发布类库的。
格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<mirrors>
<!--内部maven-->
<mirror>
<id>central</id>
<mirrorOf>*</mirrorOf>
<name>Central Repository</name>
<url>http://你仓库的地址/repository/maven-public/</url>
</mirror>
<!-- 阿里云仓库 -->
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
<!-- 中央仓库1 -->
<mirror>
<id>repo1</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo1.maven.org/maven2/</url>
</mirror>
<!-- 中央仓库2 -->
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
</mirrors>
<servers>
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>你的密码</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>你的密码</password>
</server>
</servers>
</settings>
发布快照及正式版本
maven(15),快照与发布,RELEASE与SNAPSHOT
在pom.xml文件最后添加distributionManagement发布管理节点:
例如:
<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>Nexus Release Repository</name>
<url>http://你的maven地址/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://你的maven地址/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
注意一下
<groupId>net.funfunle</groupId>
<artifactId>baselib</artifactId>
<!--<version>1.0-SNAPSHOT</version>-->
<version>1.0.1-RELEASE</version>
groupid这些,
<groupId>net.funfunle</groupId>
<artifactId>baselib</artifactId>
<!--<version>1.0-SNAPSHOT</version>-->
<version>1.0.1-RELEASE</version>
决定发布的是正式版本release还是快照snapshot的是
<!--<version>1.0-SNAPSHOT</version>-->
<version>1.0.1-RELEASE</version>
版本号及发布类型,有一点也需要注意,snapshot快照允许重复发布更新同一个版本,而release是不允许的,release每次发布版本号都要加的。
发布方式:
在mavenproject点击发布deploy。
好了,发布的结果如下:
查看一下nexus3是不是有结果了: