项目管理——Maven学习(三)

项目管理——Maven学习(三)

Maven私服

Maven私服是Maven仓库中的远程仓库,Maven仓库分为本地仓库和远程仓库,远程仓库又分为Maven中央仓库、其他远程仓库和私服。其中,中央仓库是由maven官方提供的,maven私服需要手动去搭建。通常,maven私服就是局域网内的maven远程仓库,我们通过电脑上安装maven软件并连接maven私服,就可以从私服下载上传过的所有的JAR包。且可以上传自己打好包的项目,以供其他人进行下载。除此之外,私服可以充当代理服务器,当私服上没有JAR包时会从maven中央仓库中自动下载。

使用Nexus搭建Maven私服

Nexus是一个Maven仓库管理器,Nexus除了可以充当Maven私服,还可以提供强大的仓库管理、构建搜索等功能。使用Nexus搭建Maven私服的步骤具体如下:

首先,下载相关Nexus版本https://help.sonatype.com/repomanager2/download/download-archives—repository-manager-oss。这里采用的是windows下搭建maven私服,linux下和此类似。

官网上下载速度有些坑,这里提供两个版本的nexus如下:

链接:https://pan.baidu.com/s/1QcPPs-NMeX333BiPjohaXA
提取码:essu

然后,将下载好的压缩包进行解压缩,之后进入nexus目录下的bin目录下,在此目录下打开cmd命令窗口,执行nexus.bat install命令安装服务。注意:必须要以管理员的权限执行命令,否则会安装失败。

安装成功后,我们可以就可以启动nexus服务了,windows下启动nexus服务的方式有两种,可以通过Windows系统服务启动nexus,还可以通过命令行启动nexus服务。

启动后打开浏览器输入http://localhost:8081/nexus,即可访问我们的nexus,此时点击网页右上角的Log in按钮进行登录,默认的账号和登录密码为admin与admin123,登录成功后点击左侧菜单Repositories可以看到nexus内置的仓库列表。

此时我们maven私服的搭建就完成了。

注意:如果端口冲突,可以将正在运行的8081端口的程序关闭,或者在Nexus的配置文件中修改端口号。

Nexus的仓库类型

从Nexus的仓库列表可知,nexus默认内置了很多仓库,这些仓库有四种类型,每种类型的仓库用于存放特定的JAR包,如下:

仓库类型说明
hosted宿主仓库,部署自己的JAR包到这个类型的仓库,包括Releases和Snapshots两部分,Releases为内部发布版本仓库、 Snapshots为内部测试版本仓库。
proxy代理仓库,用于代理远程的公共仓库,如maven中央仓库。用户连接私服,私服会自动去中央仓库下载JAR包或者插件。
group仓库组,用来合并多个hosted与proxy仓库,通常配置自己的maven来连接仓库组。
virtual虚拟仓库,兼容Maven1版本的JAR包或者插件。

hosted类型的仓库中Releases其实表示的是存放经过测试比较稳定的jar包的仓库,而Snapshots为存放正在测试或还未测试,尚不稳定的jar包的仓库。也就是说我们上传JAR包到仓库的时候,如果JAR包经过测试且不存在BUG的问题,我们就可以发布在Releases仓库中,如果会存在BUG问题,我们就发布在Snapshots仓库中。

注意:我们在nexus页面上看到的仓库实际对应的目录是在我们磁盘中解压缩nexus的目录下的sonatype-work\nexus\storage路径下存放的,我们实际上传到仓库的jar包在对应目录下也会有存档。

将JAR包上传至私服

上传JAR包到私服的操作步骤如下:首先,配置maven的settings.xml文件。然后,配置项目的pom.xml文件。最后,执行mvn deploy命令,将JAR包上传至私服。

配置maven的settings.xml文件,具体如下:

将如下代码粘贴到settings.xml文件中的services标签下,代码如下:

<server>
    <id>releases</id>
    <username>admin</username>
    <password>admin123</password>
</server>
<server>
    <id>snapshots</id>
    <username>admin</username>
    <password>admin123</password>
</server>

配置需要上传的项目的pom.xml文件,具体如下:

<distributionManagement>
    <repository>
        <id>releases</id>
        <url>http://localhost:8081/nexus/content/repositories/releases/</url>
    </repository>
    <snapshotRepository>
        <id>snapshots</id>
        <url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
    </snapshotRepository>
</distributionManagement>

将上述的代码粘贴到pom.xml文件中,完成后执行命令mvn deploy,此时观察私服可以发现我们的项目已经被打好包并上传成功了。

注意:settings.xml的server标签中的id必须和私服的仓库名称对应,用户名和密码必须要填写正确。在pom.xml文件中的repository标签下的id,必须和settings.xml文件中配置的进行对应,url必须对应私服下该id对应的仓库的url。在pom文件中,指定的版本号会决定具体上传的位置,例如这里的版本号为1.0-SNAPSHOT,最终将会上传至snapshots仓库下,若为RELEASE,则会上传至releases仓库下。

从私服下载JAR包

从私服下载JAR包的具体步骤如下:首先,在maven的settings.xml文件中配置下载模板。然后,在settings文件中配置私服镜像。最后,在该文件中配置激活下载模板。

settings.xml文件中配置下载模板,具体如下:

将下面的代码粘贴到settings文件中的profiles标签中即可,代码如下:

<profile>  
    <id>dev</id>  
    <repositories>  
        <repository> 
            <id>nexus</id>  
            <!--仓库组的地址-->
            <url>http://localhost:8081/nexus/content/groups/public/</url>  
            <!--是否下载releases构件-->
            <releases>  
                <enabled>true</enabled>  
            </releases>  
            <!--是否下载snapshots构件-->
            <snapshots>  
                <enabled>true</enabled>  
            </snapshots>  
        </repository>  
    </repositories> 
    <pluginRepositories> 
        <pluginRepository> 
            <id>public</id> 
            <name>Public Repositories</name> 
            <url>http://localhost:8081/nexus/content/groups/public/</url> 
        </pluginRepository> 
    </pluginRepositories>
</profile> 

注意:这里的id并不是固定的,但是这里配置的id的名称必须在下载时进行对应,否则会下载失败。下面的url配置的是nexus私服下的仓库组的url。

配置私服下载镜像,具体如下:

<mirror>
    <!--构建均从私有仓库中下载,*代表所有-->
    <id>nexus</id>
    <mirrorOf>*</mirrorOf>
    <url>http://localhost:8081/nexus/content/groups/public/</url>
</mirror>

配置激活下载模板如下:

将下面的代码粘贴到settings文件的settings下即可,代码如下:

<activeProfiles>
    <activeProfile>dev</activeProfile>
</activeProfiles>

此时我们在pom.xml文件中引入依赖,它会先从本地仓库中寻找该依赖,若找不到则会去私服找对应的依赖,这时私服会从中央仓库下载对应的依赖。等待下载完成后,我们可以发现,私服下和本地仓库下都存在了该依赖。

将第三方JAR包安装到本地仓库和Maven私服

有时依赖Maven并不能将我们想要的JAR包都下载下来,这时如果强行使用Maven去导入坐标,编译器或命令行界面会报错。因为有的JAR包并不在Maven的中央仓库中,所以我们必须去提供该JAR包的网站手动去下载,下载完成后将该JAR包安装在本地仓库或maven私服中,这时就可以正常使用该JAR包下的API了。例如:Oracle的驱动,我们在pom.xml文件中引入该驱动包的坐标,但是却无法下载成功,所以这时我们就无法正常使用该驱动包了。

将这种第三方的JAR安装到本地仓库的做法如下:

首先下载好第三方的JAR包,然后将其放在任意目录下,之后使用管理员权限打开cmd窗口,在cmd窗口下进入第三方JAR包所在的路径下,然后执行命令mvn install:install-file -Dfile=ojdbc14-10.2.0.4.0.jar -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging=jar等待安装成功。注意:这里的mvn install:install-file是固定的命令格式,-Dfile=后跟第三方JAR包的全名,-DgroupId=后跟JAR所在的组织名也就是JAR包的目录结构,-DartifactId=后跟该JAR包的唯一标识,-Dversion后跟该JAR包的版本号,-Dpackaging=后跟该JAR包的打包方式。此时我们就可以在pom文件中导入相关的依赖坐标了。

除此之外,我们还可以将第三方的JAR包安装在私服中,具体做法如下:

首先下载好第三方的JAR包,然后在maven的settings文件中配置第三方仓库的server信息,最后执行mvn deploy:deploy-file -Dfile=ojdbc14-10.2.0.4.0.jar -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging=jar -Durl=http://localhost:8081/nexus/content/repositories/thirdparty/ -DrepositoryId=thirdparty命令进行安装。

settings文件配置如下:

<server>
    <id>thirdparty</id>
    <username>admin</username>
    <password>admin123</password>
</server>

注意:上述的代码段应放在servers标签内部,标签id的值与命令中-DrepositoryId=的值要对应。命令中的Durl为私服中第三方仓库的url,其余的参数值与安装到本地仓库的命令一样。

此时等待命令执行成功,之后在私服页面上刷新第三方仓库,这时就可以看见我们上传的第三方JAR包了。

```

注意:上述的代码段应放在servers标签内部,标签id的值与命令中-DrepositoryId=的值要对应。命令中的Durl为私服中第三方仓库的url,其余的参数值与安装到本地仓库的命令一样。

此时等待命令执行成功,之后在私服页面上刷新第三方仓库,这时就可以看见我们上传的第三方JAR包了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值