2019-09-09

MAVEN

1 什么是 Maven ?

Maven使用项目对象模型(POM)的概念,可以通过一小段描述信息来管理项目的构建,

报告和文档的软件项目管理工具。

2 为什么使用Maven?

Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发布时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

缺省规则:缺省理论是在知识不完全的情况下,使推理得以进行下去的推理,采用“默认”方法: 如果没有足够的证据证明某一命题为假,那么就承认它为真。当新证据出现,且与默认命题相矛盾时,则撤销这一命题以及由此得出的全部结论,这就是缺省规则。

ANT 

ant 是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。

2 Maven和 ANT的区别 

Ant是软件构建工具,Maven的定位是软件项目管理和理解工具。Maven除了具备Ant

的功能外,还增加了以下主要的功能:

1)使用Project Object Model来对软件项目管理;

2)内置了更多的隐式规则,使得构建文件更加简单;

3)内置依赖管理和Repository来实现依赖的管理和统一存储;

4)内置了软件构建的生命周期;

Maven的下载与 IDE 的整合

1.下载地址

http://maven.apache.org/

2.Maven的目录结构

bin:可执行的文件

conf:文件的相关配置

lib :相关的jar包

Eclipse整合 Maven

整合步骤 :1.按照如下图进行:

2.点击Directory:选择整合的maven插件

3.点击左测User Serttings,再点击右侧add,添加配置xml,如下图:

4.配置settings.xml

4.1 修改settings.xml文件路径

4.2  增加阿里云远程镜像仓库


Maven仓库

1.Maven仓库是什么

Maven 仓库是基于简单文件系统存储的,集中化管理 Java API 资源(构件)的一个服

务。仓库中的任何一个构件都有其唯一的坐标,根据这个坐标可以定义其在仓库中的唯一存

储路径。得益于  Maven 的坐标机制,任何  Maven 项目使用任何一个构件的方式都是完全

相同的,Maven  可以在某个位置统一存储所有的  Maven  项目共享的构件,这个统一的位

置就是仓库,项目构建完毕后生成的构件也可以安装或者部署到仓库中,供其它项目使用。 

对于Maven来说,仓库分为两类:本地仓库和远程仓库。

1.1  远程仓库

远程仓库指通过各种协议如 file://和 http://访问的其它类型的仓库。这些仓库可能是第

三方搭建的真实的远程仓库,用来提供他们的构件下载(例如 repo.maven.apache.org 和

uk.maven.org是Maven 的中央仓库)。其它“远程”仓库可能是你的公司拥有的建立在文件

或HTTP 服务器上的内部仓库,用来在开发团队间共享私有构件和管理发布的。

1.2  本地仓库

本地仓库指本机的一份拷贝,用来缓存远程下载,包含你尚未发布的临时构件。

2. 仓库优先级问题

本地仓库----->镜像仓库------>中央仓库。

镜像仓库=中央仓库。 镜像仓库是用于替代中央仓库的。

第一访问本地仓库。 如果本地仓库不存在对应信息,访问配置文件中指定的远程仓库。 这个远程仓库是第二优先级。 镜像仓库是 Maven 开发过程中的首选远程仓库,在本地仓库和指定仓库无法获取资源的时候,直接访问镜像仓库。如果镜像仓库不是中央仓库,则会在访问镜像仓库无法获取资源后,访问中央仓库。 

Maven工程

1.Maven的工程类型

1.1 POM工程

POM工程是逻辑工程。用在父级工程或聚合工程中。用来做jar包的版本控制。

1.2  JAR工程

将会打包成jar用作 jar包使用。即常见的本地工程  - Java Project。

1.3 WAR工程

将会打包成war,发布在服务器上的工程。如网站或服务。即常见的网络工程  - Dynamic

Web Project。war 工程默认没有 WEB-INF目录及 web.xml 配置文件,IDE 通常会显示工程

错误,提供完整工程结构可以解决。

示例如下:


2 创建 Maven项目

2.1 创建步骤

2.1.1  New--> other -->Maven Project

2.1.2 勾选,创建纯净项目,不应用任何模版

2.2 填写项目信息

2.2.1    Group Id 公司域名倒写

2.2.2    Artifact Id  项目名

2.2.3    Version 版本名

2.2.4    Packaging  项目类型

2.2.4.1    Jar  java  项目

2.2.4.2    War : web  项目

2.2.4.3    POM:  父项目.如果项目有子项目,项目必须是 pom

2.2.5    Name : 自定义名称,内容任意

2.2.6    Description:  描述.详细描述.

2.2.7    Parent Project:  如果当前项目有父项目时填写

2.3 Maven项目结构

src/main/java 这个目录下储存 java源代码

src/main/resources  储存主要的资源文件。比如spring的xml配置文件和log4j的properties

文件。

src/test/java 储存测试用的类,比如JUNIT 的测试一般就放在这个目录下面

src/test/resources 储存测试用的资源文件

src 包含了项目所有的源代码和资源文件,以及其他项目相关的文件。

target 编译后内容放置的文件夹

pom.xml 是 Maven 的基础配置文件。配置项目和项目之间关系,包括配置依赖关系等等

工程关系

1.依赖

1.1 什么叫工程依赖关系?

即A 工程开发或运行过程中需要 B工程提供支持,则代表A 工程依赖B工程,把B项目的jar引入到A项目。

1.2 如何实现工程的依赖

需要在需依赖的项目pom.xml 文件中增加下属配置定义依赖关系

   

   

     

      groupName

     

      artifactName

     

      versionNo

     

      system

   

 

2 继承 关系

如果A工程继承B 工程,则代表A 工程默认依赖 B工程依赖的所有资源,且可以应用

B 工程中定义的所有资源信息。被继承的工程(B工程)只能是POM工程。

父工程创建时配置

父工程pom.xml配置

子工程创建时配置

子工程pom.xml

3 聚合关系

3.1什么是去聚合关系

当我们开发的工程拥有 2个以上模块的时候,每个模块都是一个独立的功能集合。比如

某大学系统中拥有搜索平台,学习平台,考试平台等。开发的时候每个平台都可以独立编译,

测试,运行。这个时候我们就需要一个聚合工程。

3.2 聚合工程实现的步骤:

1.创建总工程

2 创建模块


Maven中的常见插件

1 编译器插件

1.1编译插件的作用是什么?

maven默认的jdk版本不是自己想用的版本,可以在工程pom配置使用自己想使用的jdk版本,也可以在全局配置中设置使所有的maven工程统一使用自己想使用的jdk版本

1. 2 .1.在文件中配置Maven的编译插件?

1.2.2 settings.xml文件中配置全局编译器插件

2 Tomcat管理插件

2.1 Tomcat插件的作用是什么?

从远程仓库中下载tomcat插件到本地

2.2如何在pom.xml文件中配置Maven的Tomcat插件?

2.2 远程热部署

2.2.1 什么是远程热部署 

远程热部署是指,在 Tomcat 容器运行过程中,动态实现 war 工程的部署,重新部署功能。使用maven build功能实现,具体命令为:  tomcat7:deploy或tomcat7:redeploy。其中deploy代表第一次部署 war 工程;redeploy 代表 Tomcat 容器中已有同名应用。

本次操作为重新部署同名war工程。实现热部署需要远程访问Tomcat容器,所以Tomcat容器需要提供合适的访问方式和验证方式。实现热部署,需要访问 Tomcat 容器提供的原始应用 manager,并提供有效有权限的访问用户,所以在Tomcat中也需提供部分配置。具体配置内容如下:

在Tomcat 中的 conf/tomcat-users.xml 文件的配置

roles="manager-gui,manager-script"/>

项目中 pom.xml 文件中的配置

3. 资源拷贝插件

3.1 什么是资源拷贝插件?

Maven在打包时默认只将 src/main/resources里的配置文件拷贝到项目中并做打包处理,

而非resource目录下的配置文件在打包时不会添加到项目中,资源拷贝插件可以弥补此漏洞。

在pom.xml配置


Maven常用命令

1 install

本地安装, 包含编译,打包,安装到本地仓库

编译  - javac

打包  - jar, 将java 代码打包为jar文件

安装到本地仓库  - 将打包的jar文件,保存到本地仓库目录中。

2  clean

清除已编译信息。 

删除工程中的target目录。

3  compile

只编译。  javac命令

4  deploy

部署。 常见于结合私服使用的命令。

相当于是install+上传jar到私服。

包含编译,打包,安装到本地仓库,上传到私服仓库。

5  package

打包。 包含编译,打包两个功能。

你可能感兴趣的:(2019-09-09)