- maven是java平台的自动化构建工具
叫美文或是麦文, - maven可以做什么
1 工程的创建,构建,和测试
2 依赖的统一管理,自动解决重复和冲突问题,
2 项目的管理 可以实现不同的项目兼容管理
项目对象模型的标准来处理项目
-maven目录
1 java目录存放java文件
2 resources 存放配置文件
3 test 测试文件
4 target 项目输出文件
5 pom.xml 对象模型配置文件
- maven中的仓库
1 本地仓库: 本地项目依赖的jar包会存放到本地仓库中,就在用户目录下.m2\repository
2 中央仓库:maven社区提供的,所有的依赖都是从中央仓库中去找
3 远程仓库: 是公司搭建的存放在web服务器上的一个仓库,
在pom.xml配置文件中配置
<repositories>
2 <repository>
3 <id>jenkov.code</id>
4 <url>http://maven.jenkov.com/maven2/lib</url>
5 </repository>
6 </repositories>
- maven的目录和配置文集
- 配置文件 在conf/settings.xml
1设置本地仓库的位置 localRepository 标签 <localRepository>E:\maven3.6.3\repository</localRepository>
2 设置镜像 mirror 标签
<mirror>
<!--指定镜像id-->
<id>nexus-aliyun</id>
<!--匹配中央仓库-->
<mirrorOf>central</mirrorOf>
<!--指定镜像的名称-->
<name>Nexus aliyun</name>
<!--指定镜像的url-->
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
3 配置全局jdk版本
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
- 命令
1 clean 清除上一次构建生成的所有文件,
2 package 编译好代码,生成打包的格式,
3 install 将包安装到本地仓库中,可以让其他项目依赖 - pom.xml中的标签
1 <modelVersion>正在使用的pom模板版本
2 <groupId> 公司域名反写
3 <artifactId>项目名字
4 <project.build.sourceEncoding>默认字符集
5 <dependencies>依赖管理
6 <dependency> 具体依赖
7 <parent>继承父项目的pom
8 <dependencyManagement>声明依赖,不导入
9 <plugins> 引入插件
10 <pluginManagement>声明插件不加载
11 <properties>声明定义一个属性,需要时可以使用${name}来获取
-
maven工程
manven是将项目做成了工程,类型有三种
1 war
2 jar
3 pom
项目与项目之间的关系:
1 继承 父工程是一个pom工程,可以不需要有源码和资源文件 ,通过parent标签来定位
2 聚合 一个父项目可以有多个子项目,使用modules标签
3 依赖 可以通过dependencies元素标签来定义子项目dependency -
常用的插件
1 编译插件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
2 资源拷贝插件
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
3 扩展插件
<!-- 配置 Tomcat 插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- 配置 Tomcat 监听端口 -->
<port>8080</port>
<!-- 配置项目的访问路径(Application Context) -->
<path>/</path>
</configuration>
</plugin>
- 为什么需要maven构建工具
1项目很大的时候已经不能用包来划分模块,而是使用一个模块对应一个工程,工程之间的关系可以通过maven来管理,maven是使用pom模型来管理模块之间的关系
项目之间的关系有,依赖继承和聚合。
2对项目中所依赖的jar包可以集中管理到本地仓库中,版本一致性和冲突都可以避免。
- maven学习
- maven来对项目进行管理
-maven对jar依做了集中版本控制
- maven对项目的生命周期做了管理
1 mvn clear 清除编译好的代码
2 mvc compile 编译项目
3 mvn test 运行测试案例
4 mvc package 对项目进行打包处理 包含了编译 测试 打包
- maven运行和安装
maven是java语言编写的,想要运行maven就要先安装jdk
-解压jdk压缩包
tar -zvxf jdk-8
- 配置jdk环境变量
在etc/profile文件中追加几行
JAVA_HOME=/opt/jdk.1.8
PATH=$JAVA_HOME/bin:$path
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
- 知识点
系统在运行java或是其他命令时,系统是如何找到这些命令的呢?
liunx中会去path中找到对应的所在目录下找到命令后运行,如果没有配置这些命令则会需要完成命令路径
- 让环境变量生效
source /etc/profile
-验证jdk版本是否正常
1 查看版本 java -version
2 编写一个java文件来进行运行 javac/java HelloWord.java
- 下载maven
1 创建目录 mkdir /opt/maven
2 下载 wget 官网地址
[root@ady01 maven]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz
解压 tar -zvxf apche-maven.tar.gz
- ln -s 源文件 目标文件 ln -s apache-maven-3.6.2 maven
- 配置maven环境变量
cd /etc/profile/
export M2_HOME=/opt/maven/maven
export PATH=$M2_HOME/bin:$PATH
- 让环境生效 source /etc/profile
- 验证maven是否正常 mvn -v
- 运行maven命令的过程
1 运行mvn命令首先会在系统变量中path对应的目录中寻找bin目录下找
2 启动软件之后也会加载配置文件 在用户目录下.m2 寻找配置文件 settings.xml
- maven中settings.xml中的配置
- 注意一点 settings.xml是maven全局配置文件 pom.xml 是本地项目配置文件
- 全局配置/conf/settings.xml 用户配置 /.m2/settings.xml 用户配置大于全局配置
-
1 localRepository标签 设置本地仓库 作用就是从远程仓库中下载来的插件和下载下来的jar都会放到这个目录下
2 mirrors 镜像仓库位置
3 可以配置jdk
- pom.xml详解
pom 就是项目对象模型 pom.xml是maven项目的配置 描述项目的各种信息
-标签详解
基本配置 project根标签 modelVersion 设置maven的版本号
maven坐标 groupId 组织域名逆写 artifactld 项目名字 version 版本
maven版本特殊字符串 1 snapshot 不稳定 2 release 项目最后一个版本 稳定
packaging 设置项目类型 描述项目打包后的输出类型 默认是jar 还有pom war
type标签是描述依赖的类型 默认是jar
exclusions 排除依赖关系
- 继承
parent 项目继承关系
-dependencyManagement 依赖声明管理 不会加载依赖主要是做版本控制和被子项目继承
- modules 子项目模块
- properties 定义属性
- resources 配置文件不需要编译
- plugins 插件 pluginManagement 只做声明
- idea配置maven需要配置
1 maven安装目录
2 settings.xml配置文件
3 本地仓库 repository
-maven来管理项目 maven会读取到pom配置文件中的配置信息来加载需要依赖的jar包
maven不仅可以对依赖进行管理还可以对项目和整个生命周期进行管理
-maven目录结构
1 java 源文件
2 resources 资源
3 webapps web应用文件目录
4 target 打包输出目录
5 target/classes 编译输出目录
- maven坐标
1 groupid 项目组 就是域名
2 artifactId 项目名字
3 version 版本号
4 packaging 打包类型 默认是jar
- maven导入依赖架构
dependencies 依赖构件
dependency依赖 groupId artifactId version 定位一个构件的基本信息
type 设置依赖的类型 默认为jar
scope 依赖范围
option 标记是否可选
exclusions 排除依赖
- maven依赖范围
根据环境不同依赖也会出现可有可无
scope 的选项有 1 compile 默认选择 测试 编译 运行 都有效
2 test 只要测试有效 3 runtime 运行时有效 编译时无效
- maven仓库
1 本地仓库 2 远程仓库
远程仓库分为是中央仓库和私服
本地仓库位置可以在配置文件中设置 但是默认是c/.m2/respository目录下
外网中央 内网私服
- 依赖版本
1 snapshot 不稳定
2 release 稳定