赞
踩
linux版本:CentOS Linux release 7.9.1804
JDK版本:jdk-8u191-linux-i586
Maven版本:apache-maven-3.6.3
Nexus版本:nexus-3.53.0-01
JDK版本:jdk-8u191-linux-i586
下载地址:https://www.oracle.com/cn/java/technologies/javase/javase8-archive-downloads.html
Oracle官网将JDK1.8的下载地址分为三个部分:
JDK1.8.202及之前的版本:https://www.oracle.com/cn/java/technologies/javase/javase8-archive-downloads.html
JDK1.8.211及以后的版本:https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html
其它JDK版本的下载地址:https://www.oracle.com/java/technologies/downloads/archive/
[root@VM-8-11-centos ~]# rpm -qa | grep java
Maven版本:apache-maven-3.6.3
下载地址:https://dlcdn.apache.org/maven/
进入之后选择需要下载的Maven版本:
1、有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上,这样的话就可以通过这台搭建了nexus私服的电脑访问maven的远程仓库。而且自己maven私服更容易维护,由于在内网,公司的开发人员从maven私服迁出jar到本地仓库更快。
2、当需要上传第三方或者自己的jar到maven仓库时,就需要私服了。
JDK版本:jdk-8u191-linux-i586
下载地址:https://www.oracle.com/cn/java/technologies/javase/javase8-archive-downloads.html
Maven版本:apache-maven-3.6.3
下载地址:https://dlcdn.apache.org/maven/
Nexus版本:nexus-3.53.0-01
下载地址:https://www.sonatype.com/download-oss-sonatype
输入相关信息后,点击下载,会跳转到下载页面
根据操作系统的不同自行选择下载。本人希望将 Nexus 部署在 Linux 机器,所以选用的是 Unix 版本,默认下载的是最新的版本。
会自动下载,客人呢呢个有些时候因为网络波动导致没有下载请求。这种情况下,点击下面圈起来的位置,
另外 Check out the Nexus Book 这一块是 Nexus 的官方文档。可以进行查看操作。
- 另外,历史版本也在这里可以找到。
这里,如果想通过命令方式直接下载(比如用脚本安装),可以在官方历史发布版本页面 (opens new window)中找到合适版本,然后执行以下命令:
[root@VM-8-11-centos ~]# wget https://download.sonatype.com/nexus/3/nexus-3.53.0-01-unix.tar.gz /usr/local/Nexus #这里我是直接下载到了/usr/local/Nexus目录下
[root@VM-8-11-centos ~]# cd /usr/local/Nexus
[root@VM-8-11-centos Nexus]# tar -xf nexus-3.53.0-01-unix.tar
[root@VM-8-11-centos Nexus]# ll
total 228488
drwxr-xr-x 10 root root 4096 May 15 09:05 nexus-3.53.0-01
-rw-r--r-- 1 root root 233963520 May 12 16:03 nexus-3.53.0-01-unix.tar
drwxr-xr-x 3 root root 4096 May 15 09:05 sonatype-work
如果需要安装部署的服务器无联通网络条件,可先下载完成后再上传到服务器中。
解压后,有两个目录:
将下载好的maven上传到服务器上(建议软件都安装在/usr/local目录下),下面解压maven
[root@VM-8-11-centos local]# tar -zxvf apache-maven-3.6.3-bin.tar.gz # 配置Maven环境变量 vim /etc/profile #maven MAVEN_HOME=/usr/local/apache-maven-3.6.0 export MAVEN_HOME export PATH=${PATH}:${MAVEN_HOME}/bin 退出后 source /etc/profile 让配置文件重新生效
查看Maven环境变量配置是否生效:
\tar -zxvf nexus-3.14.0-04-unix.tar.gz
启动
cd /usr/local/nexus-3.14.0-04/bin
./nexus start
查看执行nexus的使用方法
./nexus console
查看Nexus运行状态
./nexus status
到此,我们的nexus就搭建成功了
浏览器打开刚部署的Nexus服务,Nexus默认端口是8081,默认用户名/密码:admin/admin123
注意:通过页面直接上传的方式只是上传了jar包,若这个jar通过Maven依赖了其他jar,那其他项目在下载这个jar时无法取得它的依赖。所以,除非这个jar没有任何依赖,否则还是推荐通过命令行或者IDE的方式上传jar包,这样才会把pom一并上传。
看到这选项是要进行登录的,在右上角点击“Sign In”的登录按钮,输入admin/admin123,登录成功之后,即可看到此功能,如图所示:
创建Proxy的具体步骤
1、点击左上角的“Create Repositories”按钮
2、选择要创建的类型
3、填写详细信息
Name:就是为代理起个名字,我取名为“aliyun”
Remote Storage: 代理的地址,Maven的地址为: https://repo1.maven.org/maven2/,但Maven官方的代理访问速度太慢了,使用阿里云的Maven代理更好,http://maven.aliyun.com/nexus/content/groups/public
Blob Store: 选择代理下载包的存放路径,我选择的是之前创建的一个。
Hosted是宿主机的意思,用于将第三方的Jar或者我们自己的jar放到私服上。
Hosted有三种方式,Releases、SNAPSHOT、Mixed
Releases: 一般是已经发布的Jar包
Snapshot: 未发布的版本
Mixed:混合的
Hosted的创建和Proxy类似,类型需选择maven2(hosted)。
注意:Deployment Pollcy,我们需要把策略改成“Allow redeploy”,以允许重复发布覆盖同版本的jar包。
能把多个仓库合成一个仓库来使用,把上几步创建的代理仓库和宿主仓库都加入到“maven-public”仓库组中:
Security
包含用户、角色、权限的配置。
Support
包含日志及数据分析。
System
包含API(Nexus这个API文档貌似是用swagger做的)、邮件服务器,设置调度任务等。
搭建了Nexus作为Maven私服,也介绍了Nexus的使用方法。
下面说说如何将创建的代理中央仓库融入实际项目中。有下面两种方式,选其一即可。
在idea、eclipse等IDE中配置好maven的settings文件路径后,在mirrors标签中增加一个mirror
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://192.168.2.109:8888/repository/aliyun/</url>
</mirror>
url中填入之前在Nexus中自己创建的代理中央仓库
在pom文件中增加一个repository,注意id和name需和代理中央仓库的Name一致。
<repositories>
<repository>
<id>aliyun</id>
<name>aliyun</name>
<url>http://192.168.2.109:8888/repository/aliyun/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
上面的配置方法选择其中一种即可。
如此一来,项目在下载jar包时会从私服的代理中央仓库中获取,如果代理仓库没有该jar,就会去代理仓库配置的远程仓库中下载到私服中,再从私服下载到项目本地。
上传含Maven依赖的jar包和源码包到Nexus并下载引入到其他项目中
上传jar包的方式有三种:Nexus页面直接上传、命令行上传、在IDE集成开发工具中上传。
本文介绍如何在idea中上传和下载jar包,这个jar包还通过Maven的pom依赖了其他jar包。
在maven根目录的conf下的settings.xml配置文件中加入server节点(需确保idea中的maven配置指向了这个settings.xml)
<server>
<id>dev</id>
<username>admin</username>
<password>admin123</password>
</server>
username和password是Nexus的账号,我添加的是Nexus默认的admin账号,你也可以再Nexus创建一个账号用于上传。
需上传的项目的pom.xml中加入
<distributionManagement> <!-- 用于上传的仓库 --> <repository> <!-- 这里的id需要和settings.xml中的server的id一致 --> <id>dev</id> <name>nexus-third</name> <!-- third是一个hosted类型的仓库,用于存放第三方或自己的jar包 --> <url>http://192.168.2.109:8888/repository/third/</url> </repository> </distributionManagement> <build> <plugins> <!-- 要将源码放上去,需要加入这个插件 --> <plugin> <artifactId>maven-source-plugin</artifactId> <version>2.4</version> <configuration> <attach>true</attach> </configuration> <executions> <execution> <phase>compile</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
其中的url是上面在Nexus3功能介绍一文中创建的hosted仓库
在idea中运行mvn deploy
在Nexus中就可以看到这个jar包了,里面还包含了pom文件,这样项目在引入这个jar时会自动引入它所依赖的其他jar包,里面还有源码jar包。
<dependency>
<groupId>com.secusoft</groupId>
<artifactId>common</artifactId>
<version>1.0.6</version>
</dependency>
注意:id和name和代理仓库的Name一致
<repositories>
<repository>
<id>maven-public</id>
<name>maven-public</name>
<url>http://192.168.2.109:8888/repository/maven-public/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
上面用到的仓库是个group仓库,在Nexus3功能介绍一文中就已经添加了我创建的proxy仓库"aliyun"和hosted仓库"third",这样远程仓库的jar包、第三方或自己的jar包就都可以下载了。
通过上面的步骤,项目中已经成功引入了该jar包,并引入了它所依赖的其他jar包
打开jar包中的某个类,显示如下
可见已经下载好了源码了。
至此,上传jar包和源码包到私服并在下载项目中的过程就全部讲解完了!
公司里面有自己的公共代码库,如果希望交给Maven进行管理,可以搭建Nexus服务器,将公司的公共代码库的代码打成jar包,然后上传到Nexus私服服务器上,项目组的成员就可以在Maven项目中通过添加依赖的方式把公司公共库的jar包给关联到项目中.
在Nexus2的版本中是提供了服务器端可视化界面支持上传第三方Jar包的,但是Nexus3的版本中好像已经把该功能给阉割了.只能手动的通过命令行的方式将第三方的Jar包导入到私服中.其实也不难,比起Nexus2来说稍显复杂些.具体步骤如下.
接着将本地仓库3rd_part 加入到仓库组中:
到这一步就已经在Nexus服务器添加存放第三方Jar包的本地仓库
<server>
<id>thirdparty</id>
<username>admin</username>
<password>admin123</password>
</server>
id:待会输入命令的时候需要用到
username:表示Nexus服务器的登陆账号
password:表示Nexus服务器的登陆密码
mvn deploy:deploy-file -DgroupId=cn.wolfcode -DartifactId=p2p -Dversion=1.0.0 -Dpackaging=jar -Dfile=D:\test\p2p.jar -Durl=http://192.168.142.128:8081/repository/3rd_part/ -DrepositoryId=thirdparty
DgroupId、DartifactId、Dversion:构成了该jar包在pom.xml的坐标,自己起名字也是可以的.
Dpackaging:表示打包类型.
Dfile:表示需要上传的jar包的绝对路径.
Durl:私服上第三方仓库的地址,打开nexus——>repositories菜单,可以看到该路径。
DrepositoryId:服务器的表示id,就是我们在setting.xml文件中配置的serverId。
执行成功表示已经上传到Nexus私服了
<dependency>
<groupId>cn.wolfcode</groupId>
<artifactId>p2p</artifactId>
<version>1.0.0</version>
</dependency>
该Jar包就自动的关联到项目中了.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。