Maven学习
Maven 功能
Maven 能够帮助开发者完成以下工作:
构建
文档生成
报告
依赖
SCMs
发布
分发
邮件列表
约定配置
Maven 提倡使用一个共同的标准目录结构,Maven 使用约定优于配置的原则,大家尽可能的遵守这样的目录结构。如下所示:
目录 目的
${basedir} 存放pom.xml和所有的子目录
${basedir}/src/main/java 项目的java源代码
${basedir}/src/main/resources 项目的资源,比如说property文件,springmvc.xml
${basedir}/src/test/java 项目的测试类,比如说Junit代码
${basedir}/src/test/resources 测试用的资源
${basedir}/src/main/webapp/WEB-INF web应用文件目录,web项目的信息,比如存放web.xml、本地图片、jsp视图页面
${basedir}/target 打包输出目录
${basedir}/target/classes 编译输出目录
${basedir}/target/test-classes 测试编译输出目录
Test.java Maven只会自动运行符合该命名规则的测试类
~/.m2/repository Maven默认的本地仓库目录位置
Maven 特点
项目设置遵循统一的规则。
任意工程中共享。
依赖管理包括自动更新。
一个庞大且不断增长的库。
可扩展,能够轻松编写 Java 或脚本语言的插件。
只需很少或不需要额外配置即可即时访问新功能。
基于模型的构建 − Maven能够将任意数量的项目构建到预定义的输出类型中,如 JAR,WAR 或基于项目元数据的分发,而不需要在大多数情况下执行任何脚本。
项目信息的一致性站点 − 使用与构建过程相同的元数据,Maven 能够生成一个网站或PDF,包括您要添加的任何文档,并添加到关于项目开发状态的标准报告中。
发布管理和发布单独的输出 − Maven 将不需要额外的配置,就可以与源代码管理系统(如 Subversion 或 Git)集成,并可以基于某个标签管理项目的发布。它也可以将其发布到分发位置供其他项目使用。Maven 能够发布单独的输出,如 JAR,包含其他依赖和文档的归档,或者作为源代码发布。
向后兼容性 − 您可以很轻松的从旧版本 Maven 的多个模块移植到 Maven 3 中。
子项目使用父项目依赖时,正常情况子项目应该继承父项目依赖,无需使用版本号,
并行构建 − 编译的速度能普遍提高20 - 50 %。
更好的错误报告 − Maven 改进了错误报告,它为您提供了 Maven wiki 页面的链接,您可以点击链接查看错误的完整描述。
1、下载:
1.1点击 Download
1.2选择版本下载
1.3解压文件
我们把解压的文件夹放在你需要放置文件的地方。
1.4配置环境变量
配置步骤:
右键 我的电脑 -> 属性 -> 高级系统设置 -> 环境变量 -> 新建系统变量1.4.1
环境变量名称:M2_HOME
变量值:maven解压存放的绝对路径
我们配置完成后点击 “”确定“”。
然后配置我们的系统变量
1.4.2配置 Path
点击编辑
添加 :%M2_HOME%\bin
测试:
测试 -> Win+R -> cmd -> mvn -v
测试结果如下图
至此我们的maven已经下载 安装 配置环境变量成功。
错误的运行??????
这样是因为没有配置对环境变量。去重新配置环境变量。
2、Maven仓库
2.1本地仓库(local)
本地仓库:就是一个文件夹,不过要遵守maven规范,
在maven的绝对目录下
2.1.1添加本地仓
2.1.2配置 settings文件
2.1.3配置本地仓库路径
注意事项:打开settings文件时选择 打开方式——记事本等其他文件打开。(直接编辑会报错哦~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~)
这里注意,D:/apache-maven-3.6.3/maven-repository文件是被注释掉的,拿出来使用即可。
注意事项2:我们复制过来的本地库绝对路径是, 我们需要改成/
保存。
这里就配置成功了
maven项目中的jar依赖去哪里查找下载呢?
https://mvnrepository.com/
2.2配置远程仓库(remote)
远程仓库:Maven是apeche公司的产品,所以远程仓库在国外。使用相对较慢。
所以阿里巴巴 的服务器 提供了 开源的jar包服务器,每10分钟在maven远程仓下载更新文件。所以国内可以使用 阿里巴巴提供的远程仓。
阿里云仓库一览图
**网址:**https://developer.aliyun.com/mvn/guide
2.2.3打开settings文件
在mirrors中添加
alimaven
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/ central
<mirror>
<id>alimaven</id>
<mirrorOf>jcenter</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
保存 配置完成 远程仓。
3、丰富自己的本地仓库命令(给本地仓库下载一些jar包)
Win+R 输入 cmd 进入 cmd窗口
输入: mvn help:system
下图 为 下载成功
然后我们就可以在我们的本地仓库查看到下载的资源
如下图
本来次文件夹是我们新建的,是一个子文件都没有的。
现在出现的文件都是我们从远程仓库下载的。(阿里云)4、如何使用IDEA配置Maven 并运行
4.1打开Intellij IDEA
4.2选择 Configure——选择 Settings
4.3设置自己安装的maven
4.4选中 User settings file : 的 Override
4.5 选中自己的settings文件
4.6 我们可以看到 本地库会自动检索
上述几步操作如下图
点击ok配置完成。
让我们来新建一下项目吧
5、使用IDEA 新建一个Maven项目,并运行。
5.1 选择新建 ——选中Maven ——选中 next
5.2设置 坐标 项目名称 版本号
5.3Next下一步后
IDEA版本高的话 5.2~5.3步骤是在一起的5.4继续点击下一步。
此时我们项目新建成功。
我们选中 import Changes 发现报错
原因 IDEA版本 与 maven版本不匹配。
节选自:CSDN
今天是2020年/04/22日,23:34腰酸背痛啊,
必须选择换一个软件。
来吧~~~宝贝
我选择卸载IDEA,毕竟高级的IDEA,可以兼容更多的插件新版本。
我安装的是IDEA2019.3.2版本
安装过程我就省了,有需要可以私聊我!!!
上图,这是我点击mport Changes,没有出现 bug
并且在pom.xml 输入 <字母 是有快捷键的提示的。(很舒服)
发布的方式:<packaging>jar</packaging>
Dependencies
相对于dependencyManagement,所有生命在dependencies里的依赖都会自动引入,并默认被所有的子项目继承。
3、区别
dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)
存放的一个jar的 公司 名称 版本
mysql
mysql-connector-java
5.1.47
,这个谁也记不住 ,看我下一步操作
Maven找包网站: https://mvnrepository.com/
搜索 想要 的jar包
点击jar包
进入子页面
选择一个版本点击
复制 包的 坐标
复制到 IDEA 进行 导入 下载
此时 演示 导包 完成
下一步让我演示如何写代码运行
在 main——java——下新建 ——com.xxx.text——类名
IDEA中的 main方法快捷键
Psvm 回车 ——自动生成了 main方法
public static void main(String[] args) {
System.out.println(“hello 小白”);
}
运行成功。mvn package 打包
cd target 进入 target
输入 java -jar myproject-1.0-SNAPSHOT.jar
报错了啊
显示我们没有主清单
咱们清除一下
cd…返回 上层
输入 mvn clean 清除
打包的 target就没有了。
我们配置一下
进入 pom.xml文件
org.apache.maven.plugins
maven-shade-plugin
1.2.1
package
shade
com.hdax.text
这样就可以了。
mvn package 打包
Cd target 进入 target文件
输入 java -jar myproject-1.0-SNAPSHOT.jar
运行成功了hello 小白
清除包
Cd…
返回到项目目录
输入 mvn clean
Target文件就会清除
配置jdk1.8
找到我们 maven安装目录
找到 settings文件
在此处
添加
jdk-1.8
true
1.8
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
保存.
此处也是可以 执行 mvn命令的