Maven笔记

目录

摘要
maven简单安装步骤
maven构建速度慢的问题
maven仓库的依赖搜索顺序
maven的镜像问题
maven构建项目jdk版本过低问题
总结
参考文献

摘要

Maven(Yiddish word 意地绪语 犹太人使用的语言,意思是知识聚合器) 是一个项目管理和构建自动化工具。这里记录下使用过程中遇到的一些问题及解决方法。阅读本文需要对maven有基本的认识和使用经验。

maven简单安装步骤

  1. 下载解压
  2. 环境变量设置
  3. 修订settings.xml文件
  4. 仓库位置修订
  5. 镜像地址修订
  6. jdk版本修订

maven构建速度慢的问题

用maven构建项目骨架时,速度非常慢,无论是在命令行中直接使用,还是在IDE中使用。是什么原因导致的呢?

假设我们来构建一个test项目,命令如下:

mvn archetype:generate -DgroupId=com.test -DartifactId=test -DarchetypeArtifactId=maven-archetype-quickstart -X

在命令的末尾加了一个参数 -X ,这样就可以看见构建的整个过程。
发现构建到过程停留在一个文件的查询上,如下图显示

于是我们就想能不能把这个文件下载到本地,不用每次构建都去远程查询呢?答案是肯定的。

我们只要把这个文件下载来下来 http://repo.maven.apache.org/maven2/archetype-catalog.xml
放到maven本地仓库配置所在目录下
比如配置如下仓库:
在这里插入图片描述
则文件archetype-catalog.xml放置在D:\data.m2\repo\archetype-catalog.xml

然后在每次构建项目,运行构建命令的时候,添加参数 -DarchetypeCatalog=local ,例子如下

mvn archetype:generate -DgroupId=com.test -DartifactId=test -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeCatalog=local -X

local表示~/.m2/repo/archetype-catalog.xml catalog文件.

remote表示http://repo.maven.apache.org/maven2/archetype-catalog.xml catalog文件.

构建速度明显加快了不少。当然archetypeCatalog还有其他配置方式,这里不细说,可以参考官方文档的说明

maven仓库的依赖搜索顺序

目前有两种说。

第一种Maven 依赖搜索顺序

local_repo > settings_profile_repo > pom_profile_repo > pom_repositories > settings_mirror (注意如果有配置mirror是不会在在去搜索central) >central(没有配置mirror这最后是搜索中央仓库)

1、本地仓库
2、maven settings profile中的repository;
3、pom.xml中profile中定义的repository;
4、pom.xml中的repositorys(定义多个repository,按定义顺序找);
5、mirror
# 可是,如果mirrorOf设置为星号(*),那么其他仓库配的地址,都会失效了,以这个为准
<mirrors> 
  <mirror> 
    <id>my_mirror</id>  
    <name>my_mirror</name>  
    <url>http://nexus.xx.yy/nexus/content/groups/public/</url>  
    <mirrorOf>*</mirrorOf> 
  </mirror> 
</mirrors>

第二种Maven 依赖搜索顺序

步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中以备将来引用。
步骤 3 - 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库以备将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)

maven的镜像问题

  • 什么是镜像?

简单理解,就是镜像是一个仓库的副本或者拷贝。

  • 使用镜像和不使用镜像的区别

没有配置mirror情况:
在这里插入图片描述

配置mirror使用的情况:

在这里插入图片描述

  • 配置镜像的目的

镜像可以比作拦截器,一般是出于访问速度和下载速度考虑。

例如我请求仓库A下载构建,但是A仓库的网络下载太慢,这时给A仓库配置了一个镜像A_mirror,这时我就去镜像A_mirror下载构件,解决A仓库网络不好问题

  • 应用

目前国内我找到比较好的镜像是阿里

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

其中< mirrorOf >central< /mirrorOf >中指的就是默认maven中央仓库的id,这个配置就解决了maven中央仓库在国外,下载构件或插件网速慢的问题。

maven构建项目,jdk版本过低问题

如果你用eclipse建立maven项目时,新建的项目往往JDK版本很低——1.5!怎么办?

  • 方式一 修改settings.xml文件,添加如下配置:
<profile>  
    <id>jdk-1.6</id>  
    <activation>  
        <activeByDefault>true</activeByDefault>  
        <jdk>1.6</jdk>  
    </activation>
    <properties>  
        <maven.compiler.source>1.6</maven.compiler.source>  
        <maven.compiler.target>1.6</maven.compiler.target>  
        <maven.compiler.compilerVersion>1.6</maven.compiler.compilerVersion>  
    </properties>  
</profile>  

方式二 在项目中的pom.xml指定jdk版本,如下:

<build>  
        <plugins>  
            <plugin>  
                <groupId>org.apache.maven.plugins</groupId>  
                <artifactId>maven-compiler-plugin</artifactId>  
                <version>3.1</version>  
                <configuration>  
                    <source>1.8</source>  
                    <target>1.8</target>  
                </configuration>  
            </plugin>  
        </plugins>  
    </build>

片段

快速创建简单java工程和web工程的命令:

mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart 

mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp

常用插件

maven-enforcer-plugin

总结

文章主要就罗列一些使用maven中遇到比较影响构建速度的问题,不涉及maven的概念和使用,这些请自行搜索学习。

参考文献

Maven 那点事儿(荐)

Generate project using an alternative catalog

Maven构建项目速度太慢的解决办法

Maven repos order when using profiles

Maven:mirror和repository 区别

Maven内置属性

Maven教程

Maven 插件之 resources 插件

使用Maven Assembly plugin将依赖打包进jar

Guide to installing 3rd party JARs

Maven 项目中依赖的搜索顺序

Maven 搜索Jar包的顺序


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值