maven copy子模块 resources_Maven 基础

Apache Maven 一个由Java 语言编写的包管理工具。可以帮助我们管理,分析项目依赖。以及构建工程。


1 Maven 的安装

可以直接参考Apache Maven 安装 的指导,安装过程比较简单。首先要把Jdk 安装好。其次是以下几个步骤

  1. 下载,解压maven。
  2. 配置Maven环境变量。
  3. 输入 mvn -h 检查是否安装成功。如下所示,即表示安装成功。

d406b119893f8df01bbc7a255c56b071.png

2 Maven 命令

Maven通过命令驱动自身工作。

常用的Maven命令如下:

命令说明
mvn clean清理Maven 项目。会删除目标路径(一般是target目录)Maven生成的打包文件,编译文件。
mvn package打包Maven项目,会生成jar 或者war文件。
mvn test执行test目录下的测试用例。
mvn deploy发布依赖到远端
mvn site生成项目相关的信息
mvn archetype创建Maven 项目
mvn tomcat:run运行在Tomcat容器
mvn install安装依赖
  1. mvn archetype 创建项目

archetype翻译过来就是典型,就是项目模版。

Maven 拥有众多类型的archetype

91925f8d176edb5f63a7992a58e8a87d.png
mvn archetype:create

执行mvn archetype:create 有以下三个参数

参数说明
-DgroupId项目的包名,比如 com.main.test
-DartifactId项目的名称,比如 MavenTest
-DarchetypeArtifactId项目的模版名称,
比如上图的 maven-archetype-weapp
mvn archetype:generate

mvn archetype:generate 是 mvn archetype:create 的便捷版本.执行后 只需要根据项目 来选择,最后即可生成Maven项目。

a1cb4013c6586ce0cc41ba5051dbba18.png

可以看到Maven 默认使用的archetype 是maven-archetype-quickstart。

接下来,我们使用我们创建的项目,来讲解Maven项目的构成。

3 Maven 项目构成

b52a30af3e617338fc6b5e3ae60b13d0.png

接下来再使用mvn archetype:generate创建一个Maven Web 项目。

eb5f3a58f018e4bc04791f6a2f77c083.png

可以看到,Maven 的标准项目中存在src/main/java和src/main/test文件夹。默认的web项目中是不存在的,但是我们依然可以通过手动创建的方式,为其创建这两个文件夹。

Maven 不仅仅是一个包管理工具,更是一个项目结构的规范标杆。遵守既定的标准,会使项目便于维护,降低开发成本。

8f8fc61885a1c47782e554966520937a.png

Pom.xml

通过观察Maven的项目,会发现每一个项目中都存在一个pom.xml。这个xml 文件 其实就是Maven项目的配置文件。通过它 可以管理项目的依赖,依赖仓库,活动文件,构建,Maven模块的聚合,以及项目信息的配置等等。

接下来,我们分别讲解Pom 文件在Maven中的应用。

  1. 依赖配置
<dependencyManagement>
  

依赖dependencies,即依赖模块,内部由多个dependency,即依赖的具体内容。

dependency内部有groupId,artifactId,version ,scope组成了Maven的坐标,根据坐标可以在仓库中找到一个唯一的包。

对于 Scope 有必要做一下解释,

Scope 指定了依赖的 作用范围 ,默认是compile。并且具有传递性。

Scope 有以下选择test,compile,runntime,provided,system 五个。

Scope说明
test只有和test相关的编译和运行才参与进来。
compile完整的参与maven 的生命周期。
runtime跳过了compile阶段。
provided没有这个包的时候,才参与进来。跳过了package阶段。
system指示Maven 只在systemPath指定的路径下寻找包。

在dependencies的上层还有一个标签dependencyManagement。一般是聚合模块的时候 在跟模块下使用,其他的子模块在引入包的时候都是引入的根模块的依赖。只有根模块不存的时候 才会去自己去根据坐标寻找依赖。

2. 活动文件

<profiles>
  

活动文件的主要作用是 在执行mav package 的时候通过 -P 参数来指定活动的配置。

mav package -P dev

执行后 就会选择 dev节点下的配置,从dev中过滤出dev.properties来使用。

Maven的标签都可以在profile内部 复写。

3. 构建

<build>
    

build节点内主要是可以指定resources资源 和 plugin。比如compiler 和 war插件,可以自己选择指定的插件,如果你需要打包jar 就需要jar打包插件。同样的如果使用了pluginManagement那么子模块会跟随根模块使用一样的插件。

mvn package

执行Maven 的构建,并按照<packaging>war</packaging>所指定的方式进行打包。

Maven 会帮我们执行clean,resource,compile,test,war这个几个插件的工作。最后生成war包。

4 Maven的生命周期和基本原理

  1. Maven的生命周期

Maven 有三个生命周期clean、default 和 site。

生命周期说明
clean执行清理相关的时候会触发该生命周期。比如mvn clean
default构建项目
site建立项目站点

clean 周期组成:

阶段说明
pre-clean清理前
clean执行清理
post-clean清理后

default 周期组成:

阶段说明
validate验证项目是否村存在 mvn validate 触发
initialize初始化阶段
compile编译项目中的源代码 mvn compile 触发
test-compile编译项目中的测试源代码 mvn test 触发
test执行test用例 mvn test 触发
package编译资源打包,jar或者 war mvn package 触发
verify检验包是否完好 mvn varify 触发
install安装打包好的资源到本地仓库 mvn install 触发
deploy发布包到远程仓库。mvn deploy 触发

以上阶段自上而下,比如执行mvn validate就只会执行validate阶段。而执行mvn deploy 会执行

validate到deploy的所有阶段。

site 周期组成:

阶段说明
pre-site生成站点文档前
site生成站点文档
post-site生成站点文档后
site-deploy发布站点

2. Maven的基本原理

e383045a0bb21dcba3b7e108f6313f35.png

我们借助IDEA来观察Maven,发现他只有三个组成部分。

  • Lifecycle
  • Plugins
  • Dependencies

对于Lifecycle(生命周期)上边已经展示过了。而Plugins正是对应了,在不同的生命周期执行具体动作的插件。Dependencies 就是项目的依赖包。

也就是说 我们在执行mvn clean 这个命令的时候,触发了Maven生命周期的clean周期,在这个周期内clean插件来帮我们执行了清理动作。

Maven 是一个插件执行框架。通过插件在不同的时期,做不同的事情。我们把不同的时期,总结为Maven的生命周期,而做不同事情的本体就是插件。

书写尚未完成,将持续更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值