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

本文基于《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一下项目即可

最新文章

  1. Linux 随机生成随机数
  2. 滚动固定TAB在顶部显示
  3. 在centos6.5中安装github的客户端git
  4. Dbcp2抛出org.apache.commons.dbcp2.LifetimeExceededException
  5. sql之left join、right join、inner join的区别(转)
  6. MySQL性能监控工具-MONyog
  7. PHP设计模式笔记五:策略模式 -- Rango韩老师 http://www.imooc.com/learn/236
  8. 开源数据库连接池之DBCP
  9. ruby on rails创建的页面訪问很慢
  10. .NET简单企业应用
  11. 前端框架对比之vue与regular(一)
  12. 如何将txt的多行记录直接导入到mysql数据库
  13. dict-字典功能介绍
  14. linux C/C++开发环境搭建指南
  15. Apache和Tomcat的区别与联系
  16. C语言第一次博客作业 陈张鑫
  17. redis 系列20 服务器下
  18. python socket 编程
  19. poi横纵导出
  20. vue中七牛插件使用

热门文章

  1. element table组件懒加载
  2. vue仿追书神器,vue小说项目源码
  3. 源码分析笔记Vector
  4. 安装mysql5.6.24解压版
  5. linux下对rpm源码手工打补丁
  6. 这么简单的 Redis 面试题都不懂,怎么拿offer?
  7. MySQL事务的四种隔离级别
  8. 一次spring boot web服务响应缓慢的排查
  9. 第五节 RabbitMQ在C#端的应用-消息收发
  10. Git 关于Fast Forward提交的简单说明