• Maven与Nexus OSS


    Maven 是一个项目管理和构建自动化工具,是Apache Fundation下的一个Java项目。常用于Java项目中依赖管理

    下载直接去官网

    安装Maven

    已经编译的二进制包 直接解压到安装目录即可

    $ cd /path/to/Download
    $ tar -xf apache-maven-3.3.9-bin.tar.gz
    $ sudo mv apache-maven-3.3.9 /usr/local/
    $ sudo ln -s /usr/local/apache-maven-3.3.9/bin/* /usr/bin/
    

    maven会首先查询 pom.xml 引入的包,查找本地仓库是及工程目录,如不存在相应的包就会从maven的远程apache仓库下载

    打包工程

    mvn package
    

    发布包到本地仓库

    mvn install
    

    Nexus OSS

    Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用Nexus你可以只在一个地方就能够完全控制访问 和部署在你所维护仓库中的每个Artifact。Nexus是一套“开箱即用”的系统不需要数据库,它使用文件系统加Lucene来组织数据。Nexus 使用ExtJS来开发界面,利用Restlet来提供完整的REST APIs,通过m2eclipse与Eclipse集成使用。Nexus支持WebDAV与LDAP安全身份认证。 Nexus分为专业收费的Nexus Pro与免费的Nexus OSS两个版本。本文以Nexus OSS为主体

    安装与配置

    下载Nexus OSS Nexus OSS 3.0 已经不支持Maven格式,所以这里我们下载 2.x 版本, 下载地址

    安装Nexus OSS

    $ cd /path/to/Downloads
    $ tar -xf nexus-2.14.1-01-bundle.tar.gz
    $ cd nexus-2.14.1-01-bundle 
    $ sudo mv nexus-2.14.1-01 /usr/local/
    
    # 建立仓库存放目的
    $ sudo mkdir /Data
    $ sudo mv sonatype-work /Data/
    
    # 建立bin运行软链
    # sudo ln -s /usr/local/nexus /usr/local/nexus-2.14.1-01
    # sudo ln -s /usr/loca/nexus-2.14.1-01/bin/nexus /usr/local/bin/
    

    配置Nexus OSS

    $ cd /usr/local/nexus-2.14.1-01/conf
    $ sudo vim nexus-propertities
    
    # 修改以下内容
    nexus-work=/Data/nexus-repos/sonatype-work/nexus
    

    测试运行

    $ nexus start
    
    # 停止
    $ nexus stop
    
    # 重启
    $ nexus restart
    

    浏览器打开http://localhost:8081/nexus,即可看到nexus oss的欢迎界面

    登录用户:admin,默认密码:admin123,登录后可在个人中心修改。

    nginx反代方式

    $ cd /path/to/nginx/conf/vhosts
    $ sudo vim nexus.local.me.conf
    
    # 内容如下:
    server                                                                             
    {                                                                                  
        server_name nexus.aeonluck.me;                                                 
                                                                                       
        location / {                                                                   
            proxy_pass   http://127.0.0.1:8081;                                        
                                                                                       
            proxy_redirect  off;                                                       
            proxy_set_header Host $host;                                               
            proxy_set_header X-Real-IP $remote_addr;                                   
            proxy_set_header X-Forwarded-For                                           
            $proxy_add_x_forwarded_for;                                                
       }                                                                               
    }
    

    添加本地host

    # sudo vim /etc/hosts
    
    # 增加以下内容
    127.0.0.1 nexus.local.me
    

    测试反代

    $ sudo nginx -s reload
    

    浏览器打开http://nexus.local.me/nexus即可见到nexus oss欢迎界面

    仓库配置

    Nexus的仓库分为以下几种:

    • proxy : 代理仓库,对远程仓库的本地代理。
    • hosted : 本地仓库。
    • virtual:影子仓库,对proxy或hosted仓库的映射。
    • group:仓库组,作为逻辑仓库组对外

    首先,我们要对几个重要仓库的配置进行修改,如 central,Apache Snapshots等,你也可以自己添加外部仓库。

    • 点击左侧 repositories,右侧打开仓库列表。
    • 选择仓库 central,点击下方 configuration,找到 “Download Remote Indexes”,修改为 true,保存。
    • 右击仓库列表中 central,选择 Update Indexs,然后打开左侧管理菜单 Administration > Scheduled Tasks,即可在计划任务列表中看到刚才建立的“update indexs”任务,这需要一定时间。
    • 索引下载完成后,我们即可在仓库的 Browse Index 中查看索引,并可进行相应的搜索

    小提示:

    1. 其它仓库配置可以参照上述过程。
    2. 可以通过Nexus OSS左侧菜单 Administration > Logging 查看相应的日志。
    3. 关于Nexus OSS的其他管理功能不再累述,只需点击左侧菜单按提示操作即可

    Maven与Nexus OSS的配合使用

    修改Maven配置,加入私库

    $ vim ~/.m2/settings.xml
    
    # servers 内增加我们的私库用户
    <server>                                                                       
      <id>snapshots</id>                                                                 
      <username>admin</username>                                                   
      <password>admin123</password>                                                
    </server> 
    
    # mirrors增加私库
    <mirror>                                                                    
      <id>nexus</id>                                                            
      <name>Local nexus repo</name>                                             
      <url>http://nexus.aeonluck.me/nexus/content/groups/public/</url>          
      <mirrorOf>*</mirrorOf>                                                    
    </mirror>
    

    特别要注意的是:
    一定要配置为 <mirrorOf>*</mirrorOf>,即让所有的仓库都先经过私库,这样可以将远程下载的包缓存到本地

    小提示:

    1. Maven安装目录下的 /conf/settings.xml 起全局控制作用。
    2. 用户目下的Maven配置文件,即:~/.m2/settings.xml 仅对当前用户用效

    添加个国内仓库 默认的apache的仓库下载速度比较慢,这里选择阿里云的Nexus仓库

    $ vim ~/.m2/setting2.xml
                            
    # 在mirrors中增加以下内容
    # 注意,位置于我们的私库之后,否则私服不能缓存到下载的包。                                                    
    <mirror>                                                                    
      <id>alimaven</id>                                                         
      <name>aliyun maven</name>                                                 
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>           
      <mirrorOf>central</mirrorOf>                                              
    </mirror>
    

    关于Maven的mirror:

    1. mirrors可以配置多个mirror,每个mirror有id,name,url,mirrorOf属性,id是唯一标识一个mirror就不多说了,name貌似没多大用,相当于描述,url是官方的库地址,mirrorOf代表了一个镜像的替代位置,例如central就表示代替官方的中央库。
    2. 镜像库并不是一个分库的概念,就是说当a.jar在第一个mirror中不存在的时候,maven会去第二个mirror中查询下载。但事实却不是这样,当第一个mirror中不存在a.jar的时候,并不会去第二个mirror中查找,甚至于,maven根本不会去其他的mirror地址查询。
    3. maven的mirror是镜像,而不是“分库”,只有当前一个mirror无法连接的时候,才会去找后一个,类似于备份和容灾。
    4. mirror也不是按settings.xml中写的那样的顺序来查询的。所谓的第一个并不一定是最上面的那个。当有id为B,A,C的顺序的mirror在mirrors节点中,maven会根据字母排序来指定第一个,所以不管怎么排列,一定会找到A这个mirror来进行查找,当A无法连接,出现意外的情况下,才会去B查询。

    Maven工程发布与私库

    一般情况下,一个使用Maven的Java团队,都会有自己的项目仓库,当开发完成相应的功能之后,都会发布相应的jar/war包到私服。供其它项目成员使用

    发布配置 在Maven工程的pom.xml中增加以下内容

    <!-- 工程自述 -->
    <groupId>org.aeonluck</groupId>
    <artifactId>org.aeonluck.hello</artifactId>
    <packaging>jar</packaging>
    <version>0.1.0-SNAPSHOT</version>
    
    <!-- 发布配置 -->
    <distributionManagement>  
        <repository>  
            <id>snapshots</id>  
            <name>Snapshots</name>  
            <url>http://nexus.local.me/nexus/content/repositories/snapshots/</url>  
        </repository>  
    </distributionManagement>  
    

     

    重要提示:

    1. 当发布到属性为snapshot的仓库时,工程自述说明小节中的 <version>,需要带上后缀 SNAPSHOT,否则会当成 release 发布。会收到 400 Bad Request 错误。
    2. 发布配置中的 <url> 地址一定要区分清楚。并在 release 与 snapshot 仓库里配置不同的地址。此外,id、name 要与Nexus中仓库的配置 configuration 中的内容一致。
    3. Nexus OSS的仓库属性:
    • snapshot : 快照版本,即不稳定的频繁发布场所,常用于团队成员快速联调。
    • release : 正式版本,即稳定包所在场所

    发布jar到的私库

    $ cd /path/to/myproject
    $ mvn deploy
    

    包发布之后,我们即可在Nexus OSS的管理仓库中看到我们刚才发布的包

    小提示

    $ mvn install:install-file -Dfile=jar包的位置 -DgroupId=上面的groupId -DartifactId=上面的artifactId -Dversion=上面的version -Dpackaging=jar
    
    # 发布到本地仓库
    mvn install:install-file -DgroupId=com.bea.xml -DartifactId=jsr173-ri -Dversion=1.0 -Dpackaging=jar -Dfile=[path to file]
    
    # 发布到私服
    mvn deploy:deploy-file -DgroupId=com.bea.xml -DartifactId=jsr173-ri -Dversion=1.0 -Dpackaging=jar -Dfile=[path to file] -Durl=[url] -DrepositoryId=[id]
    
  • 相关阅读:
    centos 7 安装ntp服务器
    centos 7编译安装nodejs 6.1
    修改IKAnalyzer配置
    Elasticsearch5.5.0安装head插件
    搭建ELASTICSEARCH实现中文分词搜索功能
    0426HTML基础:标签
    事件事件流
    纯css设置各行变色
    dom操作之元素的增删复制
    dom操作
  • 原文地址:https://www.cnblogs.com/sellsa/p/8108052.html
Copyright © 2020-2023  润新知