maven
2023-10-18 11:04:14 2 举报
AI智能生成
maven
作者其他创作
大纲/内容
小白
01~53
为什么学习Maven
maven作为依赖管理工具
maven作为构建管理工具
什么是maven
构建
使用原材料生产产品的过程
包含环节
清理
删除上一次构建的结果
编译
测试
运行提前准备好的测试程序
报告
针对刚才测试的结果生成一个全面的信息
打包
jar包
war包
安装
把一个Maven工程经过打包操作生成的 jar 包或 war 包存入Maven 仓库
部署
jar
把一个jar包部署到Nexus 私服服务器上
war
借助相关Maven 插件(例如cargo),将war包部署到Tomcat 服务器上
通常会借助jenkins
依赖
如果A工程里面用到了B工程的类、接口、配置文件等等这样的资源,那么我们就可以说A依赖B。
maven的工作机制
maven核心程序解压与配置
maven官网地址
maven.apache.org
配置本地仓库
标签
localRepository
Default: ${user.home}/.m2/repository
配置阿里云镜像
标签
mirrors
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
配置 Maven 工程的基础JDK版本
标签
profiles
<profile>
<id>jdk1.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>
<id>jdk1.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>
配置环境变量
JAVA_HOME
MAVEN_HOME
mvn -v
mvn 命令行使用
根据坐标创建 maven工程
标签解析
project
根标签,表示对当前工程进行配置、管理
modelVersion
Maven 2开始就固定是4.0.0
代表当前pom.xml所采用的标签结构。
gav
groupId
公司或组织的id
artifactId
一个项目或者是项目中的一个模块的id
是模块,还差一个项目
模块-->
项目包含很多工程
version
版本号
packaging
取值jar:生成jar包,说明这是一个Java工程。
取值war:生成war包,说明这是一个Web工程。
取值pom:说明这个工程是用来管理其它工程的工程。
name
当前工程名字
url
maven的url地址
properties
定义属性值
project.build.sourceEncoding
在构建过程中读取源码时使用的字符集
dependencies
配置具体的依赖信息
dependency
配置具体的依赖信息
通过坐标信息,导入jar包,就配置他的坐标信息即可
scope
配置当前依赖的范围
gav
maven的核心概念:POM
project Object model
项目对象模型
模型化思想的具体体现
类似
DOM
约定大于配置
配置大于编码
在Maven工程中编写代码
执行Maven的构建命令
要求
运行Maven中和构建操作相关的命令时,
必须进入到pom.xml所在的目录。
如果没有在pom.xml所在的目录运行Maven的构建命令,那么会看到下面的错误信息:
必须进入到pom.xml所在的目录。
如果没有在pom.xml所在的目录运行Maven的构建命令,那么会看到下面的错误信息:
mvn-v 命令和构建操作无关,只要正确配置了PATH,在任何目录下执行都可以。
清理
mvn clean
编译
mvn compile
测试
mvn test
打包
mvn package
安装
mvn install
创建Maven 版的Web工程
mvnrepository.com
5. 让Web工程依验Java工程
测试依赖范围
scope
取值
compile
对main、test、有用
时间角度
对 开发过程、部署到服务器 有用
开发过程,能。出来
默认值
test
对test有用
开发过程有用
provided
翻译
已提供
部署到服务器,无效
system
runtime
子主题
import
测试依赖的传递性
a->b->c
compile
可以传递
test/provided
不可以传递
测试依赖的排除
exclusions
exclusion
继承
父子工程
创建父工程
只有打包方式为pom的Maven 工程能够管理其他Maven工程。打包方式为pom的Maven工程中不写业务代码,它是专门管理其他Maven工程的工程。
<packaging>pom</packaging>
创建模块工程
会在父工程自动生成modules
<modules>
<module>icp-jz-rest</module>
<module>icp-jz-service</module>
<module>icp-jz-service-api</module>
</modules>
子工程
通过指定父工程的坐标找到父工程
子工程的groupId如果一样,可以省略
version 也是一样,可以省略
<parent>
<groupId>com.mklinfo.icp.jz</groupId>
<artifactId>infocenterplatform-jz</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
即使在父工程配置了对依赖的管理,子工程需要使用具体哪一个依赖还是要明确配置。
对于已经在父工程进行了管理的依赖,子工程中引用时可以不写version
确实省略了version标签:
子工程采纳的就是父工程管理的版本
没有省略
A:这里配置了version和父工程管理的版本一致,最终还是采纳这个版本。
B:这里配置了version但是和父工程管理的版本不一致,那么这里子工程配置的版本会覆盖父工程管理的版本并最终采纳。绝大部分情况下子工程还是遵从父工程统一管理的依赖。
父工程管理依赖
父工程修改依赖版本
配置自定义属性
创建我们自定义的属性标签
标签名:属性名
标签值:属性值
引用方式:${}
聚合
中级
资深
122~173
POM
超级POM
父POM
当前POM
有效POM
隐含的一层,但是实际上真正生效的一层。
help插件的各个目标
help:evaluate
0 条评论
下一页