Nexus-私服

在公司的局域网内部署一台服务器,服务器上安装maven私服软件。服务器上存储了maven仓库。
在私服环境下本地项目找jar流程是:
    1、先找本地仓库
    2、如果本地仓库没有从私服找

    3、如果私服没有从中央仓库下载,下载成功将jar向私服和本地仓库都存一份。

nexux仓库类型

        

    ①hosted类型:自己的jar包放到hosted类型的仓库里

           a、 Releases:发布版本,放进这个仓库里
           b、Snapshots:测试版本放在这个仓库里
           c、3rd party : 存放中央仓库没有的第三方jar包

    ②proxy类型:代理仓库,代理中央仓库

    ③group:仓库组,将一些仓库组成一个组(一般包含宿主仓库和代理仓库),自己项目链接仓库组去下载jar包

    ④virtual:虚拟仓库,存储了maven1的构件,一般不用

nexus安装路径中仓库的位置

    ①conf/nexus.properties里面有sonatype-work的地址;

    ②sonatype-work的地址/nexus/conf/nexus.xml里面有storage的地址

    

maven将项目发布到私服

①修改私服中央仓库部署策略

Release版本的项目应该发布到Releases仓库中,对应的,Snapshot版本应该发布到Snapshots仓库中。Maven根据pom.xml文件中版本号<version>节点的属性是否包含-SNAPSHOT,来判断该项目是否是snapshot版本。如果是snapshot版本,在执行mvn deploy部署命令时,maven会自动将项目发布到Snapshots仓库。要发布项目,首先需要将Releases仓库和Snapshots仓库的“Deployment Policy”设置为“Allow Redeploy”:


②配置项目pom.xml的部署仓库(将哪个项目发布到仓库就在哪个项目的pom文件里配置以下代码)


   <distributionManagement>
        <snapshotRepository>
            <id>user-snapshot</id>
            <name>User Porject Snapshot</name>
            <url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
            <uniqueVersion>true</uniqueVersion>
        </snapshotRepository>
        <repository>
            <id>user-release</id>
            <name>User Porject Release</name>
            <url>http://localhost:8081/nexus/content/repositories/releases/</url>
        </repository>
    </distributionManagement>
<uniqueVersion>表示是否为Snapshot版本分配一个包含时间戳的构建号,效果如下:

③在settings.xml中分别为上面配置的部署仓库配置server,其中id需要分别对应上面的部署仓库id

    <servers>
        <server>
            <id>user-release</id>
            <username>deployment</username>
            <password>deployment123</password>
        </server>
        <server>
            <id>user-snapshot</id>
            <username>deployment</username>
            <password>deployment123</password>
        </server>
        …        
    </servers>

④进入项目的根目录执行一下代码

mvn clean deploy  

maven从nexus中下载jar包

①配置仓库组


②仓库组地址

http://192.168.10.235:8081/nexus/content/groups/public/

③在setting.xml文件中配置镜像镜像地址为nexus仓库组的地址

<mirror>
      <!--镜像id,mirrors中可以配置多个镜像,保证id不重复-->
      <id>emei-central</id>
      <!--mirrorOf指定仓库id,仓库组包括了id为 releases、snapshots、thirdparty 、central 的仓库,可以配置具体的id,如果镜像所有的仓库则设置为*-->
      <mirrorOf>central</mirrorOf>
      <name>emei-central-mirror</name>
      <url>http://192.168.10.235:8081/nexus/content/groups/public/</url>
</mirror>

Maven将三方jar包上传到仓库(本地仓库和私服)

例如:merSDK-2.0.3.jar  中央仓库找不到

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>3.1.0.RELEASE</version>
</dependency>

①发布到本地仓库

mvn install:install-file -Dfile=jar包的位置 -DgroupId=上面的groupId -DartifactId=上面的artifactId -Dversion=上面的version -Dpackaging=jar

例如:
我下载的这个 jar 包是放到了 D:\mvn 目录下(D:\mvn\spring-context-support-3.1.0.RELEASE.jar)
那么我在 cmd 中敲入的命令就应该是:

mvn install:install-file -Dfile=D:\mvn\spring-context-support-3.1.0.RELEASE.jar -DgroupId=org.springframework -DartifactId=spring-context-support -Dversion=3.1.0.RELEASE -Dpackaging=jar

②发布到nexus私服(登录nexus界面方式上传更简洁)

上面的命令只是将jar包发布到本地仓库 但是如何发布到私服呢?应该执行下面这条命令
mvn deploy:deploy-file -DgroupId=com.xy.Oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging=jar -Dfile=E:\ojdbc14.jar -Durl=http://localhost:9090/nexus-2.2-01/content/repositories/thirdparty/ -DrepositoryId=thirdparty

猜你喜欢

转载自blog.csdn.net/wxd_1024/article/details/80359479