首页 > 代码库 > Maven之——Nexus仓库与构件

Maven之——Nexus仓库与构件

Maven之——Nexus仓库与构件   

       

1、    Nexus的索引与构件搜索


        用户可以根据构件名称、GVA来在Nexus中搜索所需构件、但是前提是被搜索的仓库开启索引。比如中央仓库、默认中央仓库是关闭自动下载远程索引的、如下图、开启下载中央仓库远程索引:

          

 

        可以在ScheduledTasks中观察系统的调度任务、也可以在这里配置系统的调度任务。


           

2、    配置Maven从Nexus下载构件


        Maven私服搭建好之后、需要修改配置文件、使用Nexus私服。具体目标是、所有构件和插件的请求都转向Nexus私服。

        大致步骤:1、配置Nexus做为我们仓库。2、将Nexus做为所有仓库的镜像。


3、     配置Nexus做为我们仓库


        如果在某一具体项目的POM中配置、那只对当前项目有效、若想一次配置所有项目都使用、那么就是在settings.xml文件中配置、但是settings.xml中没有关于Repositeries配置、但是可以在<profiles><profile>标签中配置、然后激活<profile>配置文件、通过id关联、具体见下方详细配置信息:

<profiles>
     ...
     <profile>
      <id>nexus</id>
      <repositories>
        <repository>
            <id>nexus</id>
            <name>Nexus Repository</name>
            <url>http://localhost:8081/nexus/content/groups/public/</url>
            <layout>default</layout>
            <!--<snapshots>-->
            <!--<enabled>false</enabled>-->
            <!--</snapshots>-->
            <snapshots>
                <enabled>true</enabled>
                <checksumPolicy>ignore</checksumPolicy>
                <updatePolicy>daily</updatePolicy>
            </snapshots>

            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
      </repositories>

      <pluginRepositories>
        <pluginRepository>
            <id>nexus</id>
            <name>Nexus plugins</name>
            <url>http://localhost:8081/nexus/content/groups/public/</url>
            <layout>default</layout>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
                <checksumPolicy>ignore</checksumPolicy>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>   

    <profile>
      <id>central</id>
      <repositories>
        <repository>
            <id>central</id>
            <name>Central Repository</name>
            <url>http://central</url>
            <layout>default</layout>
            <!--<snapshots>-->
            <!--<enabled>false</enabled>-->
            <!--</snapshots>-->
            <snapshots>
                <enabled>true</enabled>
                <checksumPolicy>warn</checksumPolicy>
                <updatePolicy>daily</updatePolicy>
            </snapshots>

            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
      </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>central</id>
            <name>Nexus plugins</name>
            <url>http://central</url>
            <layout>default</layout>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
                <checksumPolicy>warn</checksumPolicy>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>

  </profiles>

  <activeProfiles>
    <activeProfile>nexus</activeProfile>
    <activeProfile>central</activeProfile>
  </activeProfiles>


4、    将Nexus做为所有仓库的镜像。


        这样所有仓库请求都会转到Nexus私有仓库。镜像的配置:

  <mirrors>
     <mirror>
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <name>All repositories mirror</name>
      <url>http://localhost:8081/nexus/content/groups/public/</url>
    </mirror>
  </mirrors>

        也就是为所有仓库开启镜像。


5、    部署构件至Nexus


        部署构件到Nexus有两种方式、一是将我们的项目上传到Nexus私服、二是手动将第三方构件部署到宿主仓库。


6、    使用Maven部署构件至Nexus


        日常开发中、可以将快照版本的构件直接部署到Nexus中的Snapshot宿主仓库、或者我们自己定义的策略为Snapshot的仓库。发布版的可以直接部署到Nexus中策略为Release的仓库。POM中的配置:

 

    <distributionManagement>
        <repository>
            <id>nexus-release</id>
            <name>Project release repository</name>
            <url>http://localhost:8081/nexus/content/repositories/releases/</url>
            <!--<url>http://localhost:8081/nexus/content/repositories/Foo_Release/</url>-->
        </repository>

        <snapshotRepository>
            <id>nexus-snapshot</id>
            <name>Project snapshot repositories</name>
            <url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
            <!--<url>http://localhost:8081/nexus/content/repositories/Foo_Snapshots/</url>-->
        </snapshotRepository>
    </distributionManagement>

        Nexus内置的仓库对于匿名用户是只读的、为了能部署构件、还要在settings.xml中配置认证信息、具体是通过仓库的id关联的。认证信息:

 

  <servers>
    <server>
      <id>nexus-release</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
    <server>
      <id>nexus-snapshot</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
  </servers>

        下面会提到Nexus内置的用户以及他们拥有的权限。


7、    手动部署第三方构件至Nexus


        首先选择一个宿主仓库、比如Nexus内置的3rdparty、如下图:


         上传好之后就可以在Browse index选项中看到了。


Maven之——Nexus仓库与构件