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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

项目管理工具Maven的简单使用


基本入门
1.环境搭建
        * 在官网下载安装文件
        * 解压后就能使用, 解压到没有中文的路径下,这样就安装好了
        * 解压后需要,创建一个本地仓库,将本地仓库配置到conf/setting文件中 ,这样就完成了本地仓库的配置
<localRepository>E:\maven\repository_ssh</localRepository>
        上边的操作是maven本地仓库的配置,是让maven找到本地仓库
下边的是在eclipse中的配置,让ec找到maven
        * 在eclipse 中的-->window-->preferences -->Maven 中需要配置两个属性
                * Installations
                * User Setting
                * Installations : 用于配置maven
                        * Installations : 用于配置maven
                        --> Add -->Dirdctory -->进入到maven的跟目录 -->点击确定 -->勾选maven -->apply -->ok ,这一步就配置好了maven 的目录
                * User Setting :
                        点击User Setting 文本框的浏览Browse... --> 会自动定位到maven目录 --> 选中setting.xml文件 -->打开 -->下边的本地仓库会自动识别,点击Update Settings-->ok , 完成
        * 重建本地仓库的索引
                 * window -->show view -->Maven -->点击Maven Repositories -->找到eclipse的窗格,也就控制台标签处 -->点击 Local Repositories -->右击Local Repository(本地仓库) -->Reluild Index(重建索引) -->点击完后 在Local Repository下就有了本地仓库的目录  
        * 这样就完成了eclipse下配置maven 的操作


Maven的入门程序
        * 创建maven工程
        * 选择菜单  File ->new -> Other -->maven -->
有两个选项 : 1.maven Module  
                        2.maven Project 创建一个mave工程
        * 在弹出的界面中 -->勾选 Create a simple project ,用于跳过骨架 ; 骨架: 内部的一个结构
        * --> 进入到信息填写页面 , 各个信息代表的意思
                        * Group Id : 组id (也叫工程id) 包名
                        * Artifact Id:模块名称
                        * Version:模块的版本
                        //---上边这三个称为项目的坐标----//
* Package : 选择jar ,有三个选项 jar(java工程) , pom , war(web工程)
        * --> 点击Finish
        * 项目爆红差 : -->右击工程 -->maven -->updateProject
        到这工程创建完成


3.编写代码
        * 右击 src/main/java -->class -->跟平时创建java类一样
        * 就可以编写java文件了
        项目创建完后需要修改工程的jdk版本 , maven默认为jdk1.5
                修改jdk版本的步骤:
                * 修改版本的方法: 通过插件修改jdk版本
                * 要先添加插件 : -->右击工程 -->maven -->Add Plugin -->在Enter groupId...文本框搜索插件(插件为compiler,搜索com就行) -->选择该插件,它有很多版本,使用2.3.2就行 -->OK
                * 添加好compiler插件后,打开pom.xml文件,在文件中配置


使用maven创建web工程
* 创建工程时将packaging参数设置为 war ; war包是基于web工程的
* 添加tomcat7的插件 , 就不需要在eclipse中配置tomcat了
                * 添加插件后需要在pom.xml的tomcat插件标签中 添加configuration标签,用于设置tomcat的端口号和访问路径 例如设置为杠"/", 设置成这样后就可以通过http://localhost:8080/去访问了
<plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
                <port>8080</port>
                <path>/</path>
        </configuration>
</plugin>
* 添加servletAPI(依赖) ,因为作为web项目一定会用到reponst,request这些api,这些api都在servlet中;
        ** 引入的是 javax.servlet 2.5这个版本
        ** 添加servlet依赖后,要在pom.xml文件中,给servlet-api 的坐标添加<scope>provided</scope> , 这个标签的意思不编译到war包中
        <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
</dependency>
* 这样这个web工程就可以启动了
* 启动方法 : 右击工程 -->Run As -->Maven build... -->输入tomcat7:run
* 在src/main/java包下创建class类
工程中的配置文件的存储位置
        * 之前在src根目录存放的配置文件,放入src/main/resources下
        * 在src/main/webapp/下手动创建一个WEB-INF,将web.xml文件放在WEB-INF文件中,如果这样做项目会报错
在pom.xml中配置常量,用于将jar包的坐标信息中相同的版本号定义成一个常量,在坐标中使用EL表达式获取常量,这样做的目的是方便对坐标信息维护
在pom.xml中修改项目性质
* 通过加入<packaging>war</packaging>可以将一个java工程改为web工程


生命周期
* 执行site生命周期中的命令式会生成一个文档.
* 单独执行后边的生命周期上的一个命令时它会将它之前的步骤都执行一遍.
* maven生命周期中的每个步骤都对应着一个命令,
* Maven有三套相互独立的生命周期,分别是:clean、default、site
* 项目的生命周期 : 把maven要做的事归纳总结为一系列的步骤,就称为项目的生命周期


maven常用命令的使用
1.常用命令
        * compile:编译 ,将".java"文件编译成".class"文件,生成的 class文件会存储到target文件夹下,target相当于一个工作文件夹
        * clean:清理,将target下的class文件清理(测试结果: 在系统盘中找到该工程的路径后,target文件夹被删除)
        * test: 执行单元测试类,执行src/test/java下的类
        * package :将java工程打成jar、war。 : 会将打包的文件放到target文件夹下 ; * war包是基于web工程的 * jar是针对java工程的
        * install:安装命令,将将程的jar发布到本地仓库  : 它会编译-打包-安装(与就是将文件复制到配置的本地库中)
        发布到仓库,目录按照本工程定义的坐标生成目录
2.命令的执行方法
        * 右击工程 -->Run As -->Maven build... -->在Goals中输入命令 -->Run -->这就完成了命令的执行 ,会在控制栏显示执行结果,并且可以看到是哪个插件执行的命令
        * clean命令的执行 : 右击maven工程 -->Run As -->maven Clearn
3.在命令窗口执行maven命令
        * 其实我们所执行的这些命令是对maven原生命令的封装,我们可以在命令提示符下直接通过这些命令来对代码进行编译打包等操作
        * 步骤:
                配置环境变量
                        * 在windows中配置jdk环境变量的地方去配置
                        1.格式: 新建 --> 变量名: MAVEN_HOME 变量值:为maven安装的文件夹(包括根目录)
                        2.再在PATH中添加一下在最后格式为:   ;%MAVEN_HOME%\bin  -->确定 , 这样就配置完成了
                * 测试环境变量是否配置成功: 在命令行 输入:  mvn -v  输入完成后显示maven一堆英文说明配置成功
                * 在docs下使用maven命令
                        * 现在命令行进入到要执行的maven工程的pom.xml文件所在路径                                
                        * 输入命令 :  mvn compile  就可执行了


聚合与继承
1.概念
        模块: 实现具体功能的工程就成为模块
        聚合
                聚合 : 根据功能将大工程拆分成一个个小的工程去实现功能,由于这些小工程属于一个应用,并且相互之间可能会有调用,因此需要一个聚合工程将这些模块聚合到一起
        继承
                * 继承可以避免功能的重复,例如多个模块都要引入相同的jar包,这时就可以在父工程中引入相同的jar包,
                * 通过修改子模块中的<parent>标签中的<artifactId>标签的值来指定它所继承哪个父工程;
        注意:
                * 聚合和继承两种特性,个是个,但经常一起使用,这个工程既是继承的作用也是聚合的作用
2.聚合工程的创建
        * 创建文件时选择 Maven Project -->packaging选择pom , pom就代表聚合工程 -->这样就创建了一个聚合工程
        * 聚合工程中最重要的就是 pom.xml文件,父工程有一个pom.xml ,它的子模块也各自都有一个pom.xml文件
        * 当创建了子模块后,子模块会存储在父工程的根目录下(指的是磁盘目录)
3.模块的创建
        * 使用Maven Module创建模块 -->进入New maven Moduley页面 -->在Module Name文本框填入模块名 -->点击Parent Project选择它的父工程名 -->点击Next,进入New maven Moduley页面,将Packaging : 选择为jar -->ok -->这样就创建了一个模块
        * 创建完子模块后,在父工程的pom.xml的文件中就会多出一个<modules>标签:
4.聚合和继承的区别:
        * 聚合和继承通常是结合使用的,但是其作用是不同的。聚合是将多个模块的工程汇聚到一起,而继承则是指明某个模块工程要继承另一个模块功能。
        例如 :
        a聚合了 b模块,而b模块继承了c模块,这样也是可以的,所以说明聚合和继承是两种概念
        * 实际开发中两种方式同时出现的情况多一些
构建多模块Maven工程
1.创建父工程
        packaging : pom
        导入依赖(jar包)
2.创建子模块
都继承父工程
        dao层 : jar
        service :jar
        domain : jar
        web层 : 创建为war工程


3.拆分配置文件
4.打包
        在父工程进行,使用package
        每个子模块都被打成了jar包
        模块被打成jar包后还可以找到模块中的配置文件的原因:
        web.xml中配置路径变为下边这种 , 多了两个 *
        classpath*:applicationContext*.xml


依赖管理
1.依赖范围
        概述
依赖范围  是用来控制依赖与3种classpath(编译classpath,测试classpath,运行classpath)的关系。
        依赖范围
分四种设置
                compile
                        compile 编译、测试、运行,A在编译时依赖B,并且在测试和运行时也依赖。
                        例如 : strus-core、spring-beans 这些包什么时候都会使用
                        打到war包或jar包。
                provided
                        provided 编译、和测试有效,A在编译和测试时需要B。
                        比如:servlet-api就是编译和测试有用,在运行时不用(tomcat容器已提供)。
                        不会打到war。
                runtime
                        runtime:测试、运行有效。
                        比如:jdbc驱动包 ,在开发代码中针对java的jdbc接口开发,编译不用。
                        在运行和测试时需要通过jdbc驱动包(mysql驱动)连接数据库,需要的!!
                        会打到war。
                test
                        test:只是测试有效,只在单元测试类中用。
                        比如:junit
                        不会打到war。
                注意:
                        1.引入 junit 可以设置也可以不设置的依赖范围,程序不会报错
                        2.引入serviet-api时,必须设置为<scope>provided<scope>
                        依赖范围的设置方法
                                在pom.xml文件中,给对应jar包的坐标中加入一个scope标签
                                <scope>compile</scope>
                                例: <scope>compile</scope>
2.依赖传递
        例如: a , b ,c 三个模块或jar包的依赖关系
        a 依赖 b
        b 依赖 c
        根据a和b, b和c 的 依赖范围 ,可以确定 a和c之间的关系,a中导入依赖b时会不会导入c
3.依赖调节原则
        两种调节原则:
                路径优先
                        选择路径较浅的:
                一个工程依赖了两个不同版本的jar包或工程,依赖路径深度不同时时会选择依赖路径较短的那个版本的jar包
                例:
                1、A--->B---->C(v1) ,   
                2、A------>D---->E----->C(v2)
                会使用c(v1) 这个版本
                声明优先
                        选择声明在前的:
                        一个工程依赖了两个不同版本的jar包或工程,依赖路径深度相同时时会选择那个声明在前的版本的jar包
                        这种调节原则可能会造成,想使用的版本没有被使用,造成版本异常,(但出现这种问题的几率比较少,因为版本差距不太大,一般没问题)


4.版本锁定
        概述
: 就是在父工程中对引入的jar包版本进行声明,这样在子模块中引入的同样的jar包时,就不需要对该jar的版本进行声明了,就是不需要<version>这个标签了
,但子模块也可以设置这个版本标签,将版本设定为其它的版本
        在Maven中dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器。
        使用方法
                dependencyManagement
5.排除依赖
        右击jar包-->maven -->
        使用方法
                在依赖该包的jar包的坐标中配置一个标签就行




0 个回复

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