• 使用Apache Archiva管理Maven仓库


    1 . 私服简介

      私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。

    无私服的情况

    有私服的情况

    我们可以使用专门的 Maven 仓库管理软件来搭建私服,比如:Apache Archiva,Artifactory,Sonatype Nexus。之前我们接触比较多的是Sonatyp Nexus,今天主要介绍Apache Archiva的使用。

    2、安装使用

    1) 首先到archiva主页上下载最新版(Archiva 2.2.1 Standalone)

    http://archiva.apache.org/download.cgi

    2)下载后解压,如(E:Program Filesapache-archiva-2.2.1)

    3)配置jdk,jdk 版本在1.7 以上

    4)启动服务

    也可以使用管理员身份运行cmd,进入 archiva 安装路径bin 目录,执行 archiva.bat console ,启动时的日志信息将会输出在 控制台上。

    5)第一次访问,在浏览器上输入 http://localhost:8080/#welcome,进入到GUI界面,第一次需要输入用户名,密码,然后点击创建。(密码必须有大写字母和数字,长度不低于8位)

    6)默认的Repository

    登入后,左侧Administration栏列出了所有常用配置。

    点击Reposoitory会看到archiva自带的默认internal repository 和 remote repository

    internal repository表示Archive本地的repository,remote repository代表远程的repository。

    当maven连接到Archiva的internal repository时,Archiva会先从本地寻找目标,找不到的话再从remote repository上继续寻找。

    7) 配置文件结构

    以下是几个常用的配置文件目录

    %ARCHIVA_HOME%/data 数据文件根目录

    %ARCHIVA_HOME%/data/database 里配置了数据库文件,包括用户数据库和系统数据库

    %ARCHIVA_HOME%/data/repositories 包含索引信息。如果上传了jar等文件的话,也会保存在这里。

    %ARCHIVA_HOME%/logs 存放log文件。

    使用手册可参考:http://archiva.apache.org/docs/2.2.1/

    8)使用的时候:设置开发者终端的[maven_home]/conf/setting.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
      <pluginGroups>
      </pluginGroups>
      <proxies>
      </proxies>
      <servers>
        <server>
          <id>archiva-releases</id>
          <username>admin</username>
          <password>admin123</password>
        </server>
        <server>
          <id>archiva-snapshots</id>
          <username>admin</username>
          <password>admin123</password>
        </server>
      </servers>
      <mirrors>
        <mirror> 
          <id>archiva-releases</id> 
          <mirrorOf>internal</mirrorOf> 
          <url>http://localhost:8080/repository/internal</url> 
        </mirror>
        <mirror> 
          <id>archiva-snapshots</id>
          <mirrorOf>snapshots</mirrorOf> 
          <url>http://localhost:8080/repository/snapshots</url> 
        </mirror>
      </mirrors>
      <profiles>
        <profile>
          <activation>
            <activeByDefault>true</activeByDefault>
          </activation>
          <repositories>
            <repository>
              <id>internal</id>
              <name>Archiva Managed Internal Repository</name>
              <url>http://localhost:8080/repository/internal</url>
              <releases>
                <enabled>true</enabled>
              </releases>
              <snapshots>
                <enabled>false</enabled>
              </snapshots>
            </repository>
            <repository>
              <id>snapshots</id>
              <name>Archiva Managed Snapshots Repository</name>
              <url>http://localhost:8080/repository/snapshots</url>
              <releases>
                <enabled>false</enabled>
              </releases>
              <snapshots>
                <enabled>true</enabled>
              </snapshots>
            </repository>
          </repositories>
        </profile>
      </profiles>
    </settings>

    设置项目pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>io.github.redexpress</groupId>
      <artifactId>demo</artifactId>
      <version>1.0</version>
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
      </properties>
      <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
      </dependencies>
      <distributionManagement>
          <repository>
              <id>archiva-releases</id>
              <url>http://localhost:8080/repository/internal</url>
              <uniqueVersion>true</uniqueVersion>
          </repository>
          <snapshotRepository>
              <id>archiva-snapshots</id>
              <url>http://localhost:8080/repository/snapshots</url>
          </snapshotRepository>
      </distributionManagement>
    </project>

    传自定义jar包至maven私服:使用mvn deploy可以上传到maven私服

    mvn deploy:deploy-file -Dfile=model-3.0.0-SNAPSHOT.jar -DrepositoryId=archiva.internal -DgroupId=com.xxx.xxx -DartifactId=model -Dversion=3.0.0-SNAPSHOT  -Durl=http://192.168.1.99:8080/repository/internal/
  • 相关阅读:
    Spring bean
    spring bean初始化及销毁你必须要掌握的回调方法
    一张图搞懂Spring bean的完整生命周期
    获取Spring的ApplicationContext的几种方式
    你必须了解Spring的生态
    Spring的核心模块解析
    Spring 5.0
    纯分享scp协议如何工作
    我眼中的SAML (Security Assertion Markup Language)
    7z文件格式及其源码的分析(五)
  • 原文地址:https://www.cnblogs.com/shawWey/p/10431952.html
Copyright © 2020-2023  润新知