Maven阿里云与本地仓库配置

本文介绍如何配置Maven使用阿里云中央仓库以提高依赖下载速度,并演示通过创建父工程和子工程实现依赖管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载于:http://www.jianshu.com/p/84bbb2aa0423

Maven阿里云与本地仓库配置

本篇目录

1、阿里云中央仓库配置的原因
2、阿里云中央仓库配置的两种方法
3、第一次从中央仓库中下载jar包到本地仓库
3.1创建父工程parent project
3.2编译
3.3创建子工程common



1、阿里云中央仓库配置的原因

在pom.xml文件里配置了一些依赖,如下图


1.png


但因为默认的Maven仓库是在国外,引入这些依赖的时候,可能速度非常慢,于是阿里云做了一个中央仓库,把Maven仓库里的所有jar包复制过来,从阿里云仓库中引入依赖就变得很轻松了。

我打个比方:
pom.xml文件是个购物清单,里面可以列出诸如spring.jar、junit.jar。。。等依赖(商品),默认情况下这些jar包都是从国外的Maven仓库(商店)里引入(购买),你想想,从国外到国内,运输是不是比较困难,是不是还要过海关,这都要花时间啊。于是国内的阿里云也做了个仓库(商店),仓库中放了Maven仓库里所有的jar包(商品),一模一样的,这样我们就可以直接从阿里云仓库中引入依赖(购买商品)。这个也叫镜像。


2、阿里云中央仓库配置的两种方法

1、修改maven根目录下的conf文件夹中的setting.xml文件,内容如下:

    <mirrors>  
      <mirror>  
        <id>alimaven</id>  
        <name>aliyun maven</name>  
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
        <mirrorOf>central</mirrorOf>          
      </mirror>  
    </mirrors>

2、在pom.xml中直接添加

<repositories><!-- 代码库 -->
        <repository>
            <id>maven-ali</id>
            <url>http://maven.aliyun.com/nexus/content/groups/public//</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
                <checksumPolicy>fail</checksumPolicy>
            </snapshots>
        </repository>
    </repositories>

2.png

3、第一次从中央仓库中下载jar包到本地仓库

3.1创建父工程 parent project

在File》new》other》Maven》maven project》next》,创建一个maven project父工程,Packaging选项为pom。在pom.xml文件中加入以下依赖:

<!-- Maven阿里云中央仓库 -->
    <repositories><!-- 代码库 -->
        <repository>
            <id>maven-ali</id>
            <url>http://maven.aliyun.com/nexus/content/groups/public//</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
                <checksumPolicy>fail</checksumPolicy>
            </snapshots>
        </repository>
    </repositories>

    <!-- 集中定义依赖版本号 -->
    <properties>
        <junit.version>4.12</junit.version>
        <spring.version>4.2.4.RELEASE</spring.version>
        <mybatis.version>3.2.8</mybatis.version>
        <mybatis.spring.version>1.2.2</mybatis.spring.version>
        <mybatis.paginator.version>1.2.15</mybatis.paginator.version>
        <mysql.version>5.1.32</mysql.version>
        <slf4j.version>1.6.4</slf4j.version>
        <jackson.version>2.4.2</jackson.version>
        <druid.version>1.0.9</druid.version>
        <httpclient.version>4.3.5</httpclient.version>
        <jstl.version>1.2</jstl.version>
        <servlet-api.version>2.5</servlet-api.version>
        <jsp-api.version>2.0</jsp-api.version>
        <joda-time.version>2.5</joda-time.version>
        <commons-lang3.version>3.3.2</commons-lang3.version>
        <commons-io.version>1.3.2</commons-io.version>
        <commons-net.version>3.3</commons-net.version>
        <pagehelper.version>3.4.2</pagehelper.version>
        <jsqlparser.version>0.9.1</jsqlparser.version>
        <commons-fileupload.version>1.3.1</commons-fileupload.version>
        <jedis.version>2.7.2</jedis.version>
        <solrj.version>4.10.3</solrj.version>
        <dubbo.version>2.5.3</dubbo.version>
        <zookeeper.version>3.4.7</zookeeper.version>
        <zkclient.version>0.1</zkclient.version>
        <activemq.version>5.11.2</activemq.version>
        <freemarker.version>2.3.23</freemarker.version>
        <quartz.version>2.2.2</quartz.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <!-- 时间操作组件 -->
            <dependency>
                <groupId>joda-time</groupId>
                <artifactId>joda-time</artifactId>
                <version>${joda-time.version}</version>
            </dependency>
            <!-- Apache工具组件 -->
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${commons-lang3.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-io</artifactId>
                <version>${commons-io.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-net</groupId>
                <artifactId>commons-net</artifactId>
                <version>${commons-net.version}</version>
            </dependency>
            <!-- Jackson Json处理工具包 -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <!-- httpclient -->
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>${httpclient.version}</version>
            </dependency>
            <!-- quartz任务调度框架 -->
            <dependency>
                <groupId>org.quartz-scheduler</groupId>
                <artifactId>quartz</artifactId>
                <version>${quartz.version}</version>
            </dependency>
            <!-- 单元测试 -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
            <!-- 日志处理 -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <!-- Mybatis -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>${mybatis.spring.version}</version>
            </dependency>
            <dependency>
                <groupId>com.github.miemiedev</groupId>
                <artifactId>mybatis-paginator</artifactId>
                <version>${mybatis.paginator.version}</version>
            </dependency>
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper</artifactId>
                <version>${pagehelper.version}</version>
            </dependency>
            <!-- MySql -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <!-- 连接池 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>${druid.version}</version>
            </dependency>
            <!-- Spring -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jms</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <!-- JSP相关 -->
            <dependency>
                <groupId>jstl</groupId>
                <artifactId>jstl</artifactId>
                <version>${jstl.version}</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>${servlet-api.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jsp-api</artifactId>
                <version>${jsp-api.version}</version>
                <scope>provided</scope>
            </dependency>
            <!-- 文件上传组件 -->
            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>${commons-fileupload.version}</version>
            </dependency>
            <!-- Redis客户端 -->
            <dependency>
                <groupId>redis.clients</groupId>
                <artifactId>jedis</artifactId>
                <version>${jedis.version}</version>
            </dependency>
            <!-- solr客户端 -->
            <dependency>
                <groupId>org.apache.solr</groupId>
                <artifactId>solr-solrj</artifactId>
                <version>${solrj.version}</version>
            </dependency>
            <!-- dubbo相关 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>dubbo</artifactId>
                <version>${dubbo.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
                <version>${zookeeper.version}</version>
            </dependency>
            <dependency>
                <groupId>com.github.sgroschupf</groupId>
                <artifactId>zkclient</artifactId>
                <version>${zkclient.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.activemq</groupId>
                <artifactId>activemq-all</artifactId>
                <version>${activemq.version}</version>
            </dependency>
            <dependency>
                <groupId>org.freemarker</groupId>
                <artifactId>freemarker</artifactId>
                <version>${freemarker.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <!-- 资源文件拷贝插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.7</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <!-- java编译插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <!-- 配置Tomcat插件 -->
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

这些都不是实际依赖,只是定义依赖和管理依赖版本。

3.2、编译

在cmd中输入
d:
cd D:\javaeeworkspace\taotao-parent
切换路径到上面创建的父工程,进行mvn compile,mvn clean,操作,build success说明成功。但是在本地仓库只多加了一个org文件夹,其他所有jar包并不会下载。如下图


3.png
3.3、创建一个maven project子工程

在File》new》other》Maven》maven project》next》,创建一个maven project子工程,比如叫common,Packaging选项为jar,并且继承上面创建的父工程parent project。在pom.xml文件中添加如下代码:

<!-- 实际依赖,从父工程中的pom.xml文件复制过来的 -->
    <dependencies>
        <!-- 时间操作组件 -->
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
        </dependency>
        <!-- Apache工具组件 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-io</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
        </dependency>
        <!-- Jackson Json处理工具包 -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
        <!-- httpclient -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>
        <!-- quartz任务调度框架 -->
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
        </dependency>
        <!-- 单元测试 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- 日志处理 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </dependency>
    </dependencies>

稍等一下,在子工程common中出现包含jar包的Maven Dependencies,并且也会出现在本地仓库。如下图


4.png

5.png

以后就直接从本地仓库中引入依赖。

<think>嗯,用户的问题是关于配置Maven本地仓库路径和设置阿里云镜像来优化依赖下载。首先,我需要回想一下Maven的基本配置结构。Maven配置文件是settings.xml,通常位于安装目录的conf文件夹或者用户的.m2目录下。用户需要修改这个文件来配置本地仓库和镜像。 用户提到他们已经在配置文件中添加了阿里云镜像,但下载速度仍然慢。这可能涉及到配置的正确性或者镜像的覆盖范围。根据引用[4],需要确保在正确的settings.xml文件中添加镜像,并且mirrorOf的设置是否正确,比如使用*来覆盖所有仓库引用。此外,本地仓库路径的配置是否正确也很重要,如果路径设置有误,Maven可能无法正确使用本地已有的依赖,导致重复下载。 接下来,我需要分步骤说明如何配置本地仓库路径。用户需要找到settings.xml文件,然后在<localRepository>标签中指定路径。还要提醒用户检查路径是否存在,否则Maven可能无法创建目录,导致配置无效。 关于阿里云镜像的设置,要确保<mirror>部分正确无误。引用[1]和[4]都提到了阿里云镜像的配置示例,需要确认URL是否正确,以及mirrorOf是否覆盖了central仓库。有时候,项目中的pom文件可能覆盖了仓库配置,所以需要检查项目级别的配置是否干扰了全局设置。 此外,用户可能遇到配置后仍然从中央仓库下载的问题,这可能是由于缓存或者旧的配置残留。建议用户清理本地仓库的临时文件,或者运行mvn -U命令强制更新依赖。同时,检查环境变量是否正确指向了Maven的安装目录,避免多个Maven版本冲突。 最后,要确保用户的操作系统环境变量配置正确,如引用[3]提到的配置MAVEN_HOME和PATH变量,这样Maven命令才能正确执行。可能还需要提醒用户运行mvn help:system来测试配置是否生效,并观察下载源是否为阿里云镜像。</think>### Maven本地仓库镜像配置指南 #### 一、配置本地仓库路径 1. 打开`settings.xml`配置文件 - 全局配置:`Maven安装目录/conf/settings.xml` - 用户级配置:`用户目录/.m2/settings.xml`(推荐使用) 2. 添加本地仓库定义 ```xml <settings> <!-- 本地仓库路径(需替换实际路径) --> <localRepository>D:\maven_repository</localRepository> </settings> ``` *注意:路径需使用正斜杠且不含中文,目录需预先创建* #### 二、配置阿里云镜像加速 在`<mirrors>`节点内添加(若不存在则新建): ```xml <mirror> <id>aliyunmaven</id> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> <mirrorOf>*</mirrorOf> </mirror> ``` #### 三、验证配置有效性 1. 执行命令检查配置 ```bash mvn help:effective-settings ``` 2. 观察下载日志 正常生效时会显示`Downloading from aliyunmaven` #### 四、常见问题解决 1. 镜像未生效情况 - 检查配置文件的层级优先级(用户级 > 全局级) - 确认`<mirrorOf>`设置为`*`或`central` - 清理临时文件:`mvn dependency:purge-local-repository` 2. 路径配置异常 - 确保路径有读写权限 - Windows系统注意转义字符问题 [^1]: 阿里云镜像配置参考自Maven官方镜像设置指南 [^2]: 本地仓库路径配置规范详见Apache Maven文档
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值