缘由
- 持续集成 jenkins 框架需要配合
- 私库上传自有包
- 避免中央仓库网络条件不行包下载失败,且外网中断时也可以正常运行
- 节约公司网络带宽
- 加速包下载
步骤
- 先安装 jdk8,配置环境变量
- 下载程序包 nexus-3.3.1-01-unix.tar.gz【nexus oss 版本】
- 上传到/usr/local 目录,解压,进入到 bin 目录执行启动脚本,这里的&意思是作为后台进程运行
tar -cxvf nexus-3.3.1-01-unix.tar.gz
mv nexus-3.3.1-01-unix.tar.gz nexus331
cd nexus331/bin
./nexus run &
- 执行后,会打印很多启动信息。启动完成后访问:服务器地址:8081,nexus 的默认端口是 8081,有两个默认用户 admin(密码 admin123)、anonymous(匿名用户,只能查看)。
- 关闭 nexus
./nexus stop[关闭nexus]
登录,大概是这样:
本地设置
- 安装好以后,需要与本地做关联。那么,这个关联要怎样体现呢?一是本地 maven 的 settings.xml 文件,,二是工程的 pom.xml 文件。
- 一、maven 配置文件:settings.xml,该文件作用在于定位主库地址,如果仅仅需要从私库 download 资源,将使用的镜像替换为主库地址即可。
<?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">
<!--定义本地仓库代码 -->
<localRepository>D:\userfulsoftware\mnrepository</localRepository>
<!--使用用户名、密码进行权限认证 -->
<servers>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
<!--私有仓库主库地址 -->
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://xx.xx.xx.xx:8081/repository/maven-public/</url>
</mirror>
</mirrors>
</settings>
- 二、工程的 pom.xml,在文件内加入,作用是有 jar 包源码,或者是自己开发的私有 jar 包,可以在 pom.xml 中添加如下配置,加完之后可以将本地的 jar 包部署到 maven 库中,当然,当有多个 repository 时,可以在 mvn 命令参数中设定,在后面会提到。
<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>Releases</name>
<url>http://xx.xx.xx.xx:8081/repository/maven-releases</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Snapshot</name>
<url>http://xx.xx.xx.xx:8081/repository/maven-snapshots</url>
</snapshotRepository>
</distributionManagement>
上传 jar 包到 NEXUS 私服
- 以 idea 为例,在下方 terminal 选项卡中,跳转到工程后,有两种情况:
上传本工程到 NEXUS 私服,键入命令
mvn clean deploy -Dmaven.test.skip=true
-
将本工程打包,分发至本地仓库及 NEXUS 私服。
-
上传已有 jar 包,如 oracle 的 ojdbc6.jar,此包在中央仓库是没有的,因此需要作为私有包上传到 NEXUS 私服,键入命令:
mvn deploy:deploy-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.2.0 -Dpackaging=jar -Dfile=lib\ojdbc6.jar -Durl=http://xx.xx.xx.xx:8081/repository/maven-releases -DrepositoryId=nexus-releases
- 其中-Dfile=lib\ojdbc6.jar 这个是本地的文件,lib\ojdbc6.jar 是文件路径,上传私库后本地的文件就可以删除了。
- -Durl=http://xx.xx.xx.xx:8081/repository/maven-releases 这个路径,是私库中用来存放稳定版本 Jar 包的路径。
- -DrepositoryId=nexus-releases 这个参数对应 pom.xml 里的 respository
结语
- 在进行开发工作的时候,因为墙的存在,很多人会将 manven 中央仓库换为国内的镜像仓库,以避免依赖下载不了,网络时断时续。然而,更方便的做法是在内网架构一台私有仓库服务器,既去除了断网的风险,又可以轻松的上传自己的私有包,同时可以和其他的一些工具结合使用【比如 CI 工具】,大大提升工作效率,减少重复性劳动。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于