本文篇幅较长,建议合理利用右上角目录进行查看(如果没有目录请刷新)。

本文基于《Maven 实战》一书进行总结和扩展,大家也可以自行研读此书。

一、Maven简介

1.1、什么是Maven

Maven是Apache的一个开源工具,用于项目构建、依赖管理和项目信息管理:

使用Maven前的做法:

  • 项目构建:编译、运行单元测试、生成文档、打包、部署等工作
  • 依赖管理:我们使用第三方类库时,以依赖的方式引入到项目中;当依赖增多,会出现版本不一致、版本冲突等问题
  • 项目信息管理:项目信息(如描述、开发者列表、版本控制系统地址、许可证、缺陷管理系统地址等)散落在系统各个地方,只能手工查找

Maven的解决方案:

  • 项目构建:

    • 自动化构建过程,使用Maven命令即可自动完成项目构建
    • Maven是跨平台的,无论在什么平台都使用相同的命令
    • 标准化了项目构建流程
  • 依赖管理:
    • 提供一个中央仓库,帮助我们管理和自动下载构件(Java类库)
    • 通过一个pom文件可以统一配置项目的依赖关系
  • 项目信息管理:
    • Maven能把这些项目信息集中起来,并能进行分析统计

1.2、为什么需要Maven

原因:

  • IDE依赖大量手工操作,工作低效且容易出错;IDE配置不同时,可能导致同一个任务在不同IDE会运行失败。
  • 最早的构建工具Make,依赖于操作系统,语法问题多
  • 另一个工具Ant,过程式编程,指定一个目标,指定需要执行的任务,所以针对不同项目需要重新编写;没有依赖管理功能
  • Maven高效,减小很多重复配置,且支持项目构建、依赖管理和项目信息管理,更有一个中央仓库

二、Maven的安装和配置

2.1、Windows上安装Maven

a、要先安装好JDK,并配置好JAVA_HOME环境变量(可查看JDK安装介绍的文章)

进入cmd工具,输入检查命令:

echo %JAVA_HOME%
java -version

b、下载maven

访问官网http://maven.apache.org

进入下载页面,点击镜像地址

进入了资源列表

点击进入以下路径,即可找到zip压缩文件包

点击压缩包进行下载,并解压到一个文件夹

c、配置MAVEN_HOME环境变量,值为安装目录

d、配置Path环境变量%MAVEN_HOME%\bin

e、检查安装情况

进入cmd工具,输入检查命令:

echo %MAVEN_HOME%
mvn -v

d、升级Maven

下载解压,然后修改MAVEN_HOME环境变量地址即可

2.2、基于UNIX的系统上安装Maven

暂略,待补充

2.3、Maven安装目录文件分析

暂略,待补充

2.4、设置HTTP代理

暂略,待补充

2.5、安装m2eclipse

暂略,待补充

2.6、安装NetBeans Maven插件

暂略,待补充

2.7、Maven安装最佳实践

2.7.1、配置Maven仓库下载的路径,以及配置从阿里云仓库中下载构件

Maven默认从外国的仓库下载包,速度很慢;可以通过配置,使Maven从阿里云仓库中下载包

新建一个文件夹,用于存放从仓库下载的包

修改Maven配置文件中,本次仓库地址和网络仓库地址

<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>https://repo1.maven.org/maven2/</url>
</mirror>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>cloudera</id>
<name>cloudera maven</name>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
<mirrorOf>central</mirrorOf>
</mirror>

暂略,待补充

三、Maven使用入门

实践

1、Spring Boot、Mybatis项目中使用Maven打包成jar包后,访问报错

项目使用Spring Boot、Mybatis、Maven构建

在IDE中运行正常,但是打包成jar包后,访问rest api的时候报错:Invalid bound statement (not found)

查阅了百度,有的说是没有把xml资源打包进去

我项目中的src/main/resources目录下的application.properties文件,有如下设置

mybatis.type-aliases-package=com.Solution.ShopApp.Model
mybatis.config-location=classpath:mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/Mapper/*.xml

百度说增加pom文件下的配置,例如

<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>mybatis/Mapper/**/*.xml</include>
<include>mybatis/Mapper/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>

加上后并没有效果,仔细对比后,发现是

mybatis.mapper-locations=classpath:mybatis/Mapper/*.xml

这个设置中,本来文件夹Mapper名称是小写的,配置中写成大写了,改成对应的即可

2、【Maven】加载其它人的源码,提示POM文件中某些依赖有误由错误信息(was cached in the local repository, resolution will not be reattempted until the update interval of nexus has elapsed or updates are forced)

解决方法:删除本地仓库对应版本的目录,重新Maven Update一下项目即可

【Java架构:基础技术】一篇文章搞掂:Maven的更多相关文章

  1. 【已转移】【Java架构:系统架构理论】一篇文章搞掂:RESTful

    一.定义 1.起源 来源:Roy Fielding的博士论文. 目的:理解和评估以网络为基础的应用软件的架构设计,得到一个功能强.性能好.适宜通信的架构. 定义:一种实现软件通信的架构风格.设计风格, ...

  2. Java 集合详解 | 一篇文章解决Java 三大集合

    更好阅读体验:Java 集合详解 | 一篇文章搞定Java 三大集合 好看的皮囊像是一个个容器,有趣的灵魂像是容器里的数据.接下来讲解Java集合数据容器. 文章篇幅有点长,还请耐心阅读.如只是为了解 ...

  3. N个任务掌握java系列之统计一篇文章中单词出现的次数

    问题:统计一篇文章中单词出现的次数 思路: (1)将文章(一个字符串存储)按空格进行拆分(split)后,存储到一个字符串(单词)数组中. (2)定义一个Map,key是字符串类型,保存单词:valu ...

  4. 【已转移】【Java架构:基础技术】一篇文章搞掂:Spring

    本文篇幅较长,建议合理利用右上角目录进行查看(如果没有目录请刷新). 本文是对<SPRING实战第4版>的总结,大家也可以去仔细研读该书 [------------------------ ...

  5. 【已转移】【Java架构:基础技术】一篇文章搞掂:Java 8

    本文篇幅较长,建议合理利用右上角目录进行查看(如果没有目录请刷新). 一.Java的历史与演变 目的:为完全了解Java,需要理解Java的诞生原因.成型动力以及他继承的思想. 计算机语言的创新与发展 ...

  6. 【Java架构:基础技术】一篇文章搞掂:MyBatis-Plus

    前言 Mybatis:一个流行的半自动ORM框架. Mybatis-Plus:一个Mybatis的增强工具,在Mybatis的基础上只做增强不做改变,为简化开发.提高效率而生. 本文使用的版本:myb ...

  7. 【Java架构:基础技术】一篇文章搞掂:MyBatis

    本文篇幅较长,建议合理利用右上角目录进行查看(如果没有目录请刷新). 本文主要总结于刘增辉的<MyBatisc从入门到精通>一书,有兴趣的朋友可以自行研读 建议仔细研读官方文档: http ...

  8. 【Java架构:基础技术】一篇文章搞掂:Spring Boot 官方文档解读

    本文篇幅较长,建议合理利用右上角目录进行查看(如果没有目录请刷新). 本文内容大部分是翻译和总结官方文档,可以到https://docs.spring.io/spring-boot/docs查看(此地 ...

  9. 【Java架构:基础技术】一篇文章搞掂:Spring Boot

    本文篇幅较长,建议合理利用右上角目录进行查看(如果没有目录请刷新). 本文是对<Spring Boot 实战第4版>的总结,大家也可以去仔细研读该书 注意,书中使用的Spring Boot ...

随机推荐

  1. AcWing 252. 树 (点分治)打卡

    题目:https://www.acwing.com/problem/content/254/ 题意:求一棵树上,路径<=k的有多少条 思路:点分治,我们用两个指针算solve函数,首先对算出来的 ...

  2. [CSP-S模拟测试]:v(hash表+期望DP)

    题目背景 $\frac{1}{4}$遇到了一道水题,又完全不会做,于是去请教小$D$.小$D$看了$0.607$眼就切掉了这题,嘲讽了$\frac{1}{4}$一番就离开了.于是,$\frac{1}{ ...

  3. js中Array方法重写(二):myForEach;myEvery;mySome;myFilter;myReduce

    一.myForEach //myForeach 数组每个元素都执行一次回调函数 Array.prototype.myForEach = function(callback){ for(var i = ...

  4. python中的生成器和迭代器

    前言: 我们来了解一下什么是python中生成器.了解一下python生成器是什么,以及生成器在python编程之中能起到什么样的作用. 定义: 生成器和迭代器 通过列表生成式,我们可以直接创建一个列 ...

  5. shallow update not allowed

    ! [remote rejected] master -> master (shallow update not allowed) https://stackoverflow.com/quest ...

  6. vim中 E212:无法打开并写入文件 的解决办法

    因为centos7刚安装的时候是无法上网的,所以,需要去配置一下ifcfg-ens33文件,但实际上这个文件是只读的文件,root也无法去更改内容,这时候保存的时候需要使用 w ! sudo tee ...

  7. CentOS 7在VMware 12中共享文件看不见的问题?

    前言 由于rhel 7.2因为没有注册导致yum无法使用,包括自己配置本地源,这个命令在你没有注册都不能使用,每次使用rpm去装软件,自己去找缺少的依赖包,实在是麻烦.于是不如就换一个系统,CentO ...

  8. win7下使用cygwin编译VLC

     win7下使用cygwin编译VLC http://kathy.blog.51cto.com/1168050/295460 2010-04-15 14:54:01 标签:编译 休闲 VLC 职场 w ...

  9. Yahoo! 35条网站性能优化建议

    Yahoo! 35条网站性能优化建议 Yahoo!的 Exceptional Performance团队为改善 Web性能带来最佳实践.他们为此进行了一系列的实验.开发了各种工具.写了大量的文章和博客 ...

  10. 2019 SCUT SE 新生训练第四波 L - Boxes in a Line——双向链表

    先上一波题目 https://vjudge.net/contest/338760#problem/L 这道题我们维护一个双向链表 操作1 2 3 都是双向链表的基本操作 4操作考虑到手动将链表反转时间 ...