Maven(自动化构建工具)
目录
Maven简介
1.1 软件开发中的阶段
1.2 Maven能做什么
1.3 什么是Maven
1.4 Maven的概念
1.5 Maven安装
Maven的核心概念
2.1约定的目录结构
2.2 创建maven项目
2.3 pom文件
项目使用gav
依赖dependency
packaging 项目打包
build:构建项目的相关操作
parent(继承)
modules(聚合)
2.4 仓库
maven仓库存什么
仓库的分类
2.5 maven的生命周期,插件和命令
依赖管理
常用设置
ideal中刚开始构建一个maven项目
多模块管理
Maven简介
1.1 软件开发中的阶段
需求阶段:分析项目具体完成功能,有什么要求,具体怎么实现。
设计阶段:根据分析结果,设计项目的使用什么技术,解决难点。
开发阶段:编码实现功能。编译代码。自我测试。
测试阶段:专业测试人员,测整个项目功能十分符合设计要求,出一个测试报告。
项目的打包,发布阶段:给用户安装项目
1.2 Maven能做什么
(1)项目自动构建,帮助开发人员做项目代码的编译,测试,打包,安装,部署。
(2)管理依赖。
1.3 什么是Maven
maven是项目的自动化构建工具,管理项目的依赖
构建过程中的各个环节:清理,编译,测试,报告,打包,安装,部署。
1.4 Maven的概念
1. POM.xml:即Project Object Model项目对象模型。Maven把一个项目的结构和内容抽象成一个模型,在xml文件中进行声明,以方便进行构建和描述,pom.xml是Maven的灵魂
1.5 Maven安装
1、 确保安装了java环境:maven本身就是java 写的,所以要求必须安
装JDK。
查看java环境变量:echo %JAVA_HOME%
2、 下载并解压maven安装程序:
http://maven.apache.org/download.cgi
3、 配置Maven的环境变量:path=maven解压路径\bin
4.mvn -v,如出现以下,则配置正确。
Maven的核心概念
2.1约定的目录结构
Maven项目使用的大多数人所遵循的目录结构。叫做约定的目录结构。
一个maven项目是一个文件夹。比如我们项目叫做hello
hello 项目文件夹
\src
\main 主程序目录(完成项目功能的代码和配置文件)
\java 源代码(包和相关定义的类)
\resource 配置文件
\test 测试程序代码(开发人员自己写的测试代码)
\java 测试代码的
\resource 测试程序需要的配置文件
\pom.xml maven的配置文件,核心文件
2.2 创建maven项目
2.3 pom文件
即project object Model 项目对象模型,Maven把一个项目的结构和内容抽象成一个模型,在xml文件中进行声明,以方便构建和描述。
<?xml version="1.0" encoding="UTF-8"?>
<!--project是根标签,后面是约束文件-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><!--pom模型版本--><modelVersion>4.0.0</modelVersion>
<!--坐标组成:
groupId:组织名称。公司或者单位的标识,公司域名的倒写或者如果项目规模比较大,也是可以 域名倒写 + 大项目名字。
例子:www.baidu.com 无人车 com.baidu.appollo(无人车)
artifactId:如果groupId中有项目,此时当前的值就是子项目名称
version:项目的版本,使用的数字。三位组成。例如:主版本号.次版本.小版本号 注意:版本号中有-SNAPSHOT,表示快照,不是稳定的版本groupId 、artifactId 、version 三个元素生成了一个 Maven 项目的基本坐标,在众多的maven 项目中可以唯一定位到某一个项目。坐标也决定着将来项目在仓库中的路径及名称。--><groupId>com.bjpowernode</groupId><artifactId>ch01-maven</artifactId><version>1.0-SNAPSHOT</version><!--packaging代表项目打包类型-->
<packaging>jar<\packaging><properties>
//gav<java.version>1.8</java.version><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties>//日志jar包
<dependencies>
<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.16</version>
</dependency>
</dependencies></project>
项目使用gav
1.每个maven项目都需要有一个自己的gav
2.管理依赖,需要使用其他的jar,也需要使用gav来作为标识。
//mysql驱动
<dependency>
//gav<groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.21</version>
</dependency>
搜索坐标地址:https://mvnrepository.com
依赖dependency
依赖:项目中要使用的jar包。
需要使用maven表示依赖,通过dependency和gav一起完成依赖的使用。然后maven回去互联网下载到本机,你项目就可以使用。由maven管理这些jar包。
//日志jar包
<dependencies>
<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.16</version>
</dependency>
</dependencies>
packaging 项目打包
packaging:打包类型有jar,war,ear,pom等。位置:项目坐标下面。
build:构建项目的相关操作
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins>
</build>
parent(继承)
modules(聚合)
2.4 仓库
maven仓库存什么
1.maven工具自己需要的jar包,maven要实现一些功能,也需要jar包。
2.第三方的其他jar。例如mysql jar包
3.自己写的程序,可以打包为jar存放到仓库
仓库的分类
1.本地仓库(本机仓库):位于你自己的计算机,他是磁盘中的目录
默认位置:是你登录操作系统账号的目录中/C:\Users\Administrator\.m2\repository
修改本地仓库路径:修改maven工具的配置文件(/conf/setting.xml)
步骤:1.创建目录作为仓库使用,目录不要有空格,中文。例如:D:\BaiduNetdiskDownload\openrepository
2.修改setting.xml文件,指定D:\BaiduNetdiskDownload\openrepository这个目录作为本地仓库
<!-- localRepository| The path to the local repository maven will use to store artifacts.|| Default: ${user.home}/.m2/repository<localRepository>/path/to/local/repo</localRepository>--><localRepository>D:\BaiduNetdiskDownload\openrepository</localRepository>
3.把/C:\Users\Administrator\.m2\repository目录下文件拷贝到D:\BaiduNetdiskDownload\openrepository
或者找到我们的maven项目下,敲入cmd,进入那个目录下,然后敲入mvn compile。
2.5 maven的生命周期,插件和命令
maven的生命周期:项目构建的各个阶段,包括清理,编译,测试,报告,打包,安装,部署
插件:要完成构建项目的各个阶段,要使用maven的命令,执行命令的功能是通过插件完成,插件就是jar包,一些类。
插件:
maven-compiler-plugin:3.1:编译.java文件
maven-resources-plugin:2.6:作用把src/main/resource目录中的文件拷贝到target/classes目录中
maven-jar-plugin:2.4:jar:作用是打包处理,生成jar扩展文件,会放在target目录下。名字是:ch01-maven-1.0-SNAPSHOT.jar是坐标中:artifactid+version。
maven-install-plugin:2.4:作用是安装那个打包的文件安装到maven仓库。安装位置与项目坐标有关:坐标为C:\Users\Administrator\.m2\repository\com\bjpowernode\ch01-maven\1.0-SNAPSHOT\ch01-maven-1.0-SNAPSHOT.jar
<groupId>com.bjpowernode</groupId><artifactId>ch01-maven</artifactId><version>1.0-SNAPSHOT</version>
命令:执行maven是由命令发出。比如mvn compile
(1) mvn clean :清理命令,删除以前的声明的数据。,删除target目录。
(2)mvn compile:编译命令,执行的代码编译,把src/main/java中的.java文件编译成.class文件以及文件拷贝(包括.class文件的拷贝到target/classes和src/main/resource下文件拷贝到target/classes)
(3)mvn test-compile:编译命令,执行的代码编译,把src/test/java中的.java文件编译成.class文件以及文件拷贝(包括.class文件的拷贝到target/classes和src/main/resource下文件拷贝到target/classes)
(4)mvn test:作用执行测试src/main/java目录中的主程序代码是否符合要求。
单元测试(junit):方法是测试的最小单元。
(5)mvn package:打包,作用是把项目中的class文件和配置文件都放到一个压缩文件中
(6)mvn install:要把我们生成的这个打包文件安装到maven仓库中。
测试
1.测试类的定义:名称一般是Test+要测试类的名称
2.测试类它的包名和你要测试的类包名一样
3.在类中定义方法,要测试代码
方法定义:public void Test+测试的方法名
依赖管理
依赖范围:使用scope标签来表示依赖范围。表示这个依赖的在项目构建的那个阶段起作用。
依赖范围值scope:
compile(编译):默认参与项目构建的所有阶段(清理,编译,打包,部署等)
test(测试):只在项目测试阶段起作用。
provide:提供者,项目部署到服务器时候,不需要提供这个jar包,而是由服务器提供依赖的jar包
明显有jsp和servelet依赖。还没部署到服务器上时候需要这些jar包,因为idea没有。
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.7</version><scope>test</scope>
</dependency>
常用设置
1.properties标签里面的配置
<properties> <maven.compiler.source>1.8</maven.compiler.source> 源码编译jdk版本 <maven.compiler.target>1.8</maven.compiler.target> 运行代码的jdk版本 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 项目
构建使用的编码,避免中文乱码
<project.reporting.outputEncoding>UTF-8 </project.reporting.outputEncoding> 生成报告的编码 </properties>
2.全局变量
在properties定义标签,这个标签就是一个变量,标签的文本就是变量的值。
<properties> <maven.compiler.source>1.8</maven.compiler.source> 源码编译jdk版本 <maven.compiler.target>1.8</maven.compiler.target> 运行代码的jdk版本 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 项目
构建使用的编码,避免中文乱码
<project.reporting.outputEncoding>UTF-8 </project.reporting.outputEncoding> 生成报告的编码
<!--自定义全局变量-->
<spring.version>5.2.2.RELEASE</spring.version>
</properties>
使用全局变量:$(变量名)
<dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>$(spring.version)</version>
</dependency>
(3)使用资源插件
处理的配置文件信息,maven默认处理配置文件
1.maven会把src/main/resource目录中的文件,拷贝到target/classes下
2.maven只处理src/main/java中的.java文件,把这些Java文件编译为class,拷贝到target/classes下,src/main/java下其他文件不处理。
针对2,我们要把src/main/java下其他文件拷贝到target/classes,我们就需要借助一个资源插件build
<build>
<resources> <resource> <directory>src/main/java</directory><!--所在的目录--> <includes>
<!--包括目录下的.properties,.xml 文件都会扫描到--> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <!-- filtering选项 false不启用过滤器, *.property已经起到过
滤的作用了 --> <filtering>false</filtering> </resource> </resources>
</build>
ideal中刚开始构建一个maven项目
File---->Settings:设置maven安装主目录、maven的settings.xml文件和本地仓库所在位置
多模块管理
pom是项目对象模型,该文件是可以被子工程继承,maven多模块管理,其实就是让它的子模块的pom文件来继承父工程的pom。
commonModel:提供公共的基础服务,比如工具类、常量类等等;
bussinessModel:业务模块,是系统真正要实现的业务,依赖于 common 模块,比如订 单管理、财务统计、会员管理等;
application:可发布的 web 应用,由各个 bussinessModel 组成,最终满足项目整体需求;
第三方模块:包括各类框架,Spring、MyBatis、日志等。整个应用都是依赖它们完成开 发的
ideal多模块管理方法:看我上传的文档。java/工具/maven/文档/北京动力节点-郭鑫老师
Maven(自动化构建工具)相关推荐
- maven自动化构建工具出现“编码EUC_CN的不可映射字符”
在maven中默认采用gbk编码,我在IDEA中编写的代码默认为utf-8,因此在自动化构建的过程中就可能出现"编码EUC_CN的不可映射字符",此时可以在pom.xml文件中添加 ...
- Maven自动化构建工具
第一章.Maven简介 Maven的作用 Maven中的概念
- 不使用 Maven 等构建工具,而使用原始方法在 IntelliJ IDEA 中制作 JAR 包
不使用 Maven 等构建工具,而使用原始方法在 IntelliJ IDEA 中制作 JAR 包 说明 步骤 说明 本文的 原始 Java 程序,指的是不使用项目构建工具(如 Maven)而建立起的一 ...
- 不使用 Maven 等构建工具,而使用原始方法在 IntelliJ IDEA 中整合 Tomcat 部署 Web 应用
不使用 Maven 等构建工具,而使用原始方法在 IntelliJ IDEA 中整合 Tomcat 部署 Web 应用 我们知道,部署 Web 应用可以直接将 Web 应用的文件夹置于 Tomca ...
- python自动化构建工具_Python自动化构建工具scons使用入门笔记
这段时间用到了scons,这里总结下,也方便我以后查阅. 一.安装sconsLinux环境(以CentOS为例) 1.yum安装 yum install scons 2.源码安装 下载scons:ht ...
- (28)自动化构建工具Gulp
一.自动化构建工具介绍 Grunt:它是最早的自动化构建工具,它是基于临时文件进行构建的,构建速度慢. Gulp:它是基于内存进行构建的.是我们目前最流行最常用的自动化构建工具.构建速度快,上手更容易 ...
- 前端自动化构建工具之webpack入门——简单入门
写在前面 这篇博客也是参照别人的webpack入门,加上自己的一些操作,还有我在此过程中遇到的困难.如果是已经入门的或者这方面的高手,请绕行,也请勿吐槽. 正文开始 我们为什么要学习webpack 首 ...
- 前端自动化构建工具:用Gulp4.0搭建一个基本的前端开发环境
一个项目的完成一般需要经过三个步骤:初始化.开发和部署.在前端开发过程中,我们经常需要依靠一些自动化构建工具来优化前端工作流程,来帮助我们完成一系列繁琐的工作,例如浏览器热更新.ES6编译.代码压缩. ...
- 常用的前端自动化构建工具gulp/grunt/fis --简介
常用的前端自动化构建工具 之前我们自动化构建将入门级别使用的 NPM Scripts自动化构建工具对于相对复杂的项目构建会比较吃力,那么我们会了解 Gulp Grunt fIS 用法基本相同:都是通过 ...
最新文章
- 人人都能看懂的EM算法推导
- HTML5 geolocation和BaiduMap、BingMap、GoogleMap
- LED音乐频谱之输出数据处理
- SaaS加速器II 能力中心:互利互补 共享商业红利
- Determine destination location of apt-get install package?
- Java 高频面试题:聊一聊 JUC 下的 LinkedBlockingQueue
- 服务注册与发现用mysql_yeasul: 轻量级服务注册与发现中心,具有健康检查功能。...
- 如何用深度学习进行CT影像肺结节探测(附有基于Intel Extended Caffe的3D Faster RCNN代码开源)
- ES6.X,你必须知道的API和相关技巧
- PAT_B_1082_C++(20分)
- codevs 1907 方格取数 3
- 百度二年级手工机器人_让父母少弯腰的家务神器——追觅扫拖机器人慧目F9评测...
- java为什么不使用odbc_java jdbc和odbc的区别是什么?jdbc和odbc的关系是怎样的?
- java+oracle数据库锁,数据库学习之Oracle数据库\记录被另一个用户锁住\解决方法...
- 洛谷 P1396 营救
- 这里面有一些关于依图工作的内容
- Cocos2d-x动画播放(序列帧)
- ElementUI表格序号翻页后重置的解决办法
- 省电指南-ESP8266如何降低功耗
- 学生综合素质评价系统c语言,学生综合素质评价表自我评价范文(2)
热门文章
- idea的debug功能详解
- 长安大学微型计算机原理与接口技术答案,长安大学微机原理与接口技术B卷答案...
- 2015年高教社杯全国大学生数学建模竞赛A题 “互联网+”时代的出租车资源配置
- 超级棒的一个DP问题详解(入门)
- Oracle入门学习详解
- div高度、宽度100%|div width、height 100% - div100%
- 运维脚本 内存管理统计(5)
- 中级认证宝典【全理论】
- 数据预处理--缺失值填补《菜菜学习笔记》
- MIDI音符输入技巧