A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 丶笑笑 初级黑马   /  2018-7-6 10:16  /  686 人查看  /  0 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

重点:
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, 子模块将隐式的继承父模块的这两个元素
聚合和继承通常是结合使用的,但是其作用是不同的。聚合是将多个模块的工程汇聚到一起,而继承则是指明某个模块工程要继承另一个模块功能。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马