黑马程序员技术交流社区
标题: maven [打印本页]
作者: 丶笑笑 时间: 2018-7-6 10:16
标题: maven
重点:maven:
• 是什么
• 能干什么
• 具体配置
• 引入插件
• 引入依赖
• 聚合和继承
什么是maven能干什么:Maven 是 apache 下的开源项目,项目管理工具,管理 java 项目。
1、项目对象模型(Project Object Model)
POM 对象模型,每个 maven 工程中都有一个pom.xml 文件,定义工程所依赖的 jar 包、本工程的坐标、打包运行方式。。
2、依赖管理系统(基础核心 )
maven 通过坐标对项目工程所依赖的 jar 包统一规范管理。
3、maven 定义一套项目生命周期
clean defaultsite
清理、初始化、编译、测试、报告 、打包、部署、站点生成
4、一组标准集合
强调:maven 工程有自己标准的工程目录结构、定义坐标有标准。
5、maven 管理项目生命周期过程都是基于插件完成的
仓库:1、中央仓库
就是远程仓库,仓库中 jar 由专业团队(maven团队)统一维护。
中央仓库的地址:
http://repo1.maven.org/maven2/
2、本地仓库
相当于缓存,工程第一次会从远程仓库(互联网)去下载 jar 包,将 jar 包存
在本地仓库(在程序员的电脑上)。第二次不需要从远程仓库去下载。先从本地仓库找,如果找不到才会去远程仓库找。
3、私服
在公司内部架设一台私服,其它公司架设一台仓库,对外公开,主要用来获得其他私服的jar包
maven目录结构
本地仓库目录结构
环境搭建:
1. 拷贝本地仓库
repository_ssh.zip解压到 D 盘
2. 配置本地仓库
打开 maven 的安装目录中conf/ settings.xml 文件,在这里配置本地仓库:
<localRepository>D:\repository_ssh</localRepository>
这里的意思是配置本地仓库的目录为 D:\repository_ssh
eclipse 配置 Maven:
1.配置 Maven 的安装目录
进入 eclipse ,选择菜单 windows - Preferences-->install , 在左侧的树状导航中点击 add 按钮,弹出窗口后选择 maven 的安装目录
然后点击 Apply
2. 配置 UserSettings
选择左侧树形导航的 User Settings ,选择 Maven 目录下 conf 下的 settingsxml
然后点击 Update Settings 、Reindex 和 Apply 按钮.
(四)重建本地仓库索引
选择菜单 window --> show View
选择 Rebuild Index 重新创建索引
整体项目设置 (引入插件):plugin<build>
<plugins>
<!--更改编译版本-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<!--设置tomcat-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<!-- 指定端口 -->
<port>8080</port>
<!-- 请求路径-->
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
引入依赖(引入JAR包):dependencies<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
tomcat中也有servlet,此时引入是让依赖在开发中使用,打包时这个不打包
工程目录结构说明: project /src/main/java 主体程序 java 源文件(不要放配置文件) /src/main/resources 主体程序所需要的配置文件(不要放 java 文件) /src/test/java 单元测试程序 java 源文件 /src/test/resources 单元测试程序所用的配置文件 /target 编译输出目录 pom.xml Maven 进行工作的主要配置文件。 对应目录 src target
坐标 org.hibernate hibernate-core 5.0.7.Final
项目工程目录结构:
发布到target:
涉及到源目录:
会把源目录下的文件编译到classes中,所以配置文件可以写在/src/main/resources下,都是源目录
生命周期:
• Maven 有三套相互独立的生命周期,分别是:clean、default、site
• clean 主要是清理项目、default 是 Maven 最核心的的构建项目、site 是生成项目站点
• 每一个大的生命周期又分为很多个阶段。后面的阶段依赖于前面的阶段
• 生命周期本身相互独立,用户可以仅仅调用生命周期的某一个阶段(命令)
常用命令:clean:清理,将 target 下的 class文件清理
//clean周期
-----------------------------------我是分割线--------------------------------
//default周期
compile:编译
test: 执行单元测试类,执行 src/test/java 下的类
package:将 java 工程打成 jar、war。
install:安装命令,将将程的 jar 发布到本地仓库
发布到仓库,目录按照本工程定义的坐标生成目录
聚合和继承:(一)聚合
所谓聚合,顾名思义,就是把多个模块或项目聚合到一起,我们可以建立一个专门负责聚合工作的Maven 工程。
建立该 project 的时候,我们要注意以下几点:
1.聚合模块本身也做为一个 Maven 项目,它必须有自己的 POM
2.它的打包方式必须为: pom
3.引入了新的元素:modules---module
4.版本:聚合模块的版本和被聚合模块版本一致
5.相对目录:每个 module 的值都是一个当前POM 的相对目录
6.目录名称:为了方便的快速定位内容,模块所处的目录应当与其 artifactId
一致(Maven 约定而不是硬性要求),总之,模块所处的目录必须和<module>模块所处的目录</module>相一致。
7.习惯约定:为了方便构建,通常将聚合模块放在项目目录层的最顶层,其它聚合模块作为子目录存在。这样当我们打开项目的时候,第一个看到的就是聚合模块的 POM
8.聚合模块减少的内容:聚合模块的内容仅仅是一个 pom.xml 文件,它不包含src/main/Java src/test/java 等目录,因为它只是用来帮助其它模块构建的工具,本身并没有实质的内容。
9.聚合模块和子模块的目录:他们可以是父子类,也可以是平行结构,当然如果使用平行结构,那么聚合模块的 POM 也需要做出相应的更改。
(二)继承
我们在项目开发的过程中,可能多个模块独立开发,但是多个模块可能依赖相同的元素,比如说每个模块都需要 Junit,使用spring 的时候,其核心jar 也必须都被引入,在编译的时候,maven-compiler-plugin插件也要被引入。这时我们采用继承,就不用在每个子模块分别定义了。
如何配置继承:
1.说到继承肯定是一个父子结构,那么我们在父工程中来创建一个 parent project
2.<packaging>: 作为父模块的POM,其打包类型也必须为 POM
3.结构:父模块只是为了帮助我们消除重复,所以它也不需要 src/main/java src/test/java等目录
4.新的元素:<parent> , 它是被用在子模块中的
5.<parent>元素的属性:<relativePath>: 表示父模块 POM的相对路径,在构建的时候,Maven 会先根据 relativePath 检查父 POM,如果找不到,再从本地仓库查找
6.relativePath 的默认值:../pom.xml
7.子模块省略groupId 和 version:使用了继承的子模块中可以不声明 groupId和version, 子模块将隐式的继承父模块的这两个元素
聚合和继承通常是结合使用的,但是其作用是不同的。聚合是将多个模块的工程汇聚到一起,而继承则是指明某个模块工程要继承另一个模块功能。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |