Maven使用教程【动力节点】

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 自定义全局变量一般是定义 依赖的版本号, 当你的项目中要使用多个相同的版本号,先使用全局变量定义, 在使用${变量名}

Maven


1 概述


1.1 完成一个java项目,需要做哪些工作?


1.分析项目要做什么,知道项目有哪些组成部分。

2.设计项目,通过哪些步骤,使用哪些技术。需要多少人,多长的时间。

3.组建团队,招人, 购置设备,服务器, 软件, 笔记本。

4.开发人员写代码。 开发人员需要测试自己写代码,重复多次。

5.测试人员,测试项目功能是否符合要求。

6.测试开发人员提交代码->如果测试有问题->需要开发人员修改,再提交代码给测试

7.测试人员在测试代码->如果还有问题->再交给开发人员->开发人员修改再提交->再测试

8.直到测试代码通过。


1.2 传统开发项目的问题,没有使用maven管理的项目


1.很多模块,模块之间有关系, 手工管理关系,比较繁琐。

2.需要很多第三方功能, 需要很多jar文件,需要手工从网络中获取各个jar

3.需要管理jar的版本

4.管理jar文件之间的依赖, 你的项目要使用a.jar 需要使用b.jar里面的类。


  • a.jar需要b.jar这个关系叫做依赖, 或者你的项目中要使用mysql的驱动, 也可以叫做项目依赖mysql驱动。
  • a.class使用b.class, a依赖b类


5.必须首先获取到b.jar才可以, 然后才能使用a.jar


1.3 Maven的功能


maven是一款Java项目构建项目[完场项目代码的编译、测试、打包和部署]、依赖管理[jar包管理、下载、版本]和管理项目信息工具,具体功能有


1.整合多个项目之间的引用关系,可以根据业务和分层需要任意拆分一个项目

2.可以管理jar包及其各个版本,并且可以自动下载和引入项目中

3.根据指定版本自动解决jar包版本兼容问题

4.把jar包所依赖的其它jar包自动下载并引入项目


1.4 构建: 项目的构建。


构建是面向过程的,就是一些步骤,完成项目代码的编译,测试,运行,打包,部署等等。


maven支持的构建包括有:


1.清理, 把之前项目编译的东西删除掉,我新的编译代码做准备。


2.编译, 把程序源代码编译为执行代码, java-class文件


。maven的编译是批量的,maven可以同时把成千上百的文件编译为class。


。javac 不一样,javac一次编译一个文件。


3.测试, maven可以执行测试程序代码,对项目中的关键点进行测试,验证你的功能是否正确。


。测试也是批量的,maven同时执行多个测试代码,同时测试很多功能。


4.报告, 在每一次测试后以标准的格式记录和展示测试结果。


。测试通过不生成。


5.打包, 把你的项目中所有的class文件,配置文件等所有资源放到一个压缩文件中。


。这个压缩文件就是项目的结果文件


。java工程对应jar包


。web工程对应war包


6.安装, 把5中生成的文件jar,war安装到本机仓库


7.部署, 将打包的结果部署到远程仓库或将war包部署到服务器上运行。


1.5 maven核心概念


1.POM : 一个文件名称是pom.xml , pom翻译过来叫做项目对象模型。

。maven把一个项目当做一个模型使用。

。通过pom控制maven构建项目的过程,管理jar依赖。


2.约定的目录结构 : maven项目的目录和文件的位置都是规定的。


3.坐标 : 是一个唯一的字符串,用来表示资源的。


4.依赖管理 : 管理你的项目可以使用的jar文件


5.仓库管理(了解) :你的资源存放的位置


6.生命周期 (了解) : maven工具构建项目的过程,就是生命周期。(对应1.4七步)


7.插件和目标(了解):执行maven构建的时候用的工具是插件


8.继承:父继承子


9.聚合:把几个项目的东西归纳到一起


讲maven的使用,先难后易的。 难是说使用maven的命令,完成maven使用 , 在idea中直接使用maven,代替命令。


1.6 maven工具的安装和配置。


1.需要从maven的官网下载maven的安装包 apache-maven-3.3.9-bin.zip


2.解压安装包,解压到一个目录,非中文目录。


  • 子目录 bin :执行程序,主要是mvn.cmd
  • conf :maven工具本身的配置文件 settings.xml


3.配置环境变量


  • 在系统的环境变量中,指定一个M2_HOME的名称, 指定它的值是maven工具安装目录,bin之前的目录


M2_HOME=D:\work\maven_work\apache-maven-3.3.9


  • 再把M2_HOME加入到path之中,在所有路径之前加入 %M2_HOME%\bin;


4.验证,新的命令行中,执行mvn -v


注意:需要配置JAVA_HOME ,指定jdk路径


C:\Users\Administrator>mvn -v
 出现如下内容,maven安装,配置正确。
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:4
Maven home: D:\work\maven_work\apache-maven-3.3.9
Java version: 1.8.0_40, vendor: Oracle Corporation
Java home: C:\java\JDK8-64\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos"


2 核心概念


2.1 目录结构


  • 每一个maven项目在磁盘中都是一个文件夹(项目-Hello)


  • maven约定的目录结构[规则]。


  • Hello/ #根目录


。/src #源代码


  • /main #放你主程序java代码和配置文件


  • /java #你的程序包和包中的java文件


  • /resources #你的java程序中要使用的配置文件


  • /test # 放测试程序代码和文件的(可以没有)


  • /java #测试程序包和包中的java文件


  • /resources #测试java程序中要使用的配置文件


。/pom.xml #maven的核心文件(maven项目必须有)


2.2 mvn compile[了解]


  • mvn compile


编译src/main目录下的所有java文件的。


。下载了许多jar包


Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-parameter-documenter-2.0.9.pom


。为什么要下载?


maven工具执行的操作需要很多插件(java类–jar文件)完成的


。下载什么东西了


jar文件,即插件,插件是完成某些功能


。下载的东西存放到哪里了。


默认仓库(本机仓库):C:\Users\(登录操作系统的用户名)Administrator.m2\repository


。编译的结果是在项目的根目录下生成target目录(结果目录)


。maven编译的java程序,最后的class文件都放在target目录中


2.3 仓库


  • 仓库是什么: 仓库是存放东西的, 存放maven使用的jar 和 我们项目使用的jar


。maven使用的插件(各种jar)

。我项目使用的jar(第三方的工具)

。我们自己开发的模块


  • 仓库的分类


1.本地仓库, 就是你的个人计算机上的文件夹,存放各种jar


2.远程仓库, 在互联网上的,使用网络才能使用的仓库


。中央仓库,最权威的, 所有的开发人员都共享使用的一个集中的仓库,


https://repo.maven.apache.org :中央仓库的地址


。中央仓库的镜像:就是中央仓库的备份, 在各大洲,重要的城市都是镜像。


。私服,在公司内部,在局域网中、使用的, 不是对外使用的。


  • 仓库的使用,maven仓库的使用不需要人为参与。


。开发人员需要使用mysql驱动—>maven首先查本地仓库—>私服—>镜像—>中央仓库


  • 设置本机存放资源的目录位置(设置本机仓库):


1.修改maven的配置文件, maven安装目录/conf/settings.xml


先备份 settings.xml


2.修改 <localRepository> 指定你的目录(不要使用中文目录)


D:\work\maven_work\maven_repository


2.4 pom


  • pom:Project Object Model,项目对象模型。


Maven 把一个项目的结构和内容抽象成一个模型,在 xml 文件中 进行声明,以方便进行构建和描述,pom.xml 是 Maven 的灵魂。


  • pom标识


坐标(gav):唯一值, 在互联网中唯一标识一个项目的


<groupId>公司域名的倒写</groupId>
<artifactId>自定义项目名称</artifactId>
<version>自定版本号</version



  • 项目在仓库中的位置是由坐标来决定的:groupId、artifactId 和 version 决定项目在仓库中 的路径,artifactId 和 version 决定 jar 包的名称。


。packaging: 打包后压缩文件的扩展名,默认是jar ,web应用是war


packaging 可以不写, 默认是jar


。dependencies 和dependency 依赖


相当于是 java代码中import


你的项目中要使用的各种资源说明, 比我的项目要使用mysql驱动


 <dependencies>
  <!--依赖  java代码中 import -->
  <dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.9</version>
 </dependency>


。properties配置属性


例如project.build.sourceEncoding( 项 目 构 建 源 码 编 码 方 式 )


。build构建


与构建相关的配置


。parent继承


。modules聚合


2.5 maven生命周期, maven的命令,maven的插件


  • maven的生命周期:就是maven构建项目的过程,清理,编译,测试,报告,打包,安装,部署
  • maven的命令:
  • maven独立使用,通过命令,完成maven的生命周期的执行
  • maven可以使用命令,完成项目的清理,编译,测试等等
  • 执行命令必须在命令行进入 pom.xml 所在目录!
  • maven的插件: maven命令执行时,真正完成功能的是插件,插件就是一些jar文件, 一些类。


2.6 测试


maven借助单元测试,批量的测试你类中的大量方法是否符合预期的。


  • 单元测试(测试方法):用的是junit, junit是一个专门测试的框架(工具)。


。junit测试的内容: 测试的是类中的方法, 每一个方法都是独立测试的。


。方法是测试的基本单位(单元)。


  • 使用步骤


。加入依赖,在pom.xml加入单元测试依赖


<!-- 单元测试 -->
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.11</version>
  <scope>test</scope>
</dependency>


。maven项目中的src/test/java目录下,创建测试程序。


。推荐的创建类和方法的提示:


1. 测试类的名称 是Test + 你要测试的类名
    例如你要测试HelloMaven , 创建测试类 TestHelloMaven
2. 测试的方法名称 是:Test + 方法名称
   - 方法是public的,必须的
   -  方法没有返回值, 必须的
   - 方法名称是自定义的,推荐是Test + 方法名称
   -  在方法的上面加入 @Test
   ```java
      @Test
     public void testAdd(){
         测试HelloMaven的add方法是否正确
     }
   ```


。mvn compile


编译main/java/目录下的java 为class文件, 同时把class拷贝到 target/classes目录下面


把main/resources目录下的所有文件 都拷贝到target/classes目录下


3 IDEA


3.1 idea配置maven


  • 在idea中设置maven ,让idea和maven结合使用。


  • idea中内置了maven ,一般不使用内置的, 因为用内置修改maven的设置不方便。


  • 使用自己安装的maven, 需要覆盖idea中的默认的设置。让idea指定maven安装位置等信息


。配置当前的工程,file–settings —Build, Excution,Deployment–Build Tools


–Maven


  • Maven Home directory: maven的安装目录


  • User Settings File : 就是maven安装目录conf/setting.xml配置文件


  • Local Repository : 本机仓库的目录位置

–Build Tools–Maven–Runner


  • VM Options : DarchetypeCatalog=internal


archetypeCatalog=internal , maven项目创建时,会联网下载模版文件,比较大,


使用**-DarchetypeCatalog=internal**,不用下载, 创建maven项目速度快。


  • JRE: 你项目的jdk


。配置以后新建工程的设置, file–new projects setup–Settings for New Project【22版idea】


3.2 使用模版创建项目


archetype骨架模板


1)maven-archetype-quickstart : 普通的java项目

2)maven-archetype-webapp : web工程


4 依赖


  • tomcat10 的servlet依赖 和jsp依赖


  <dependency>
      <groupId>jakarta.servlet.jsp</groupId>
      <artifactId>jakarta.servlet.jsp-api</artifactId>
      <version>3.0.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>jakarta.servlet</groupId>
      <artifactId>jakarta.servlet-api</artifactId>
      <version>5.0.0</version>
      <scope>provided</scope>
    </dependency>


  • 依赖范围:就是在maven构建项目的那些阶段中起作用。


。使用scope表示

。scope的值有 compile, test, provided ,默认是compile

。maven构建项目阶段: 编译, 测试 ,打包, 安装 ,部署 过程(阶段)


3a3f3a7e0613b86e804e7321ae3f421f.png


  • junit的依赖范围是 test


  <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>


  • servlet的依赖范围是provided 提供者


 <dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>          servlet.jar
  <scope>provided</scope> 提供者
</dependency>


  • 在写项目的中的用到的所有依赖(jar ) ,必须在本地仓库中有。

没有必须通过maven下载, 包括provided的都必须下载。


  • 你在servlet需要继承HttpServlet( provided) , 你使用的HttpServlet是maven仓库中的。


当你的写好的程序, 放到 tomat服务器中运行时, 此时你的程序中不包含servlet的jar

因为tomcat提供了 servlet的.jar


5 maven常用操作


5.1 maven的属性设置


<properties> 设置maven的常用属性


5.2 maven的全局变量


  • 自定义的属性


  • 使用方法


1.在 通过自定义标签声明变量(标签名就是变量名)

2.在pom.xml文件中的其它位置,使用 ${标签名} 使用变量的值


  • 用途


。自定义全局变量一般是定义 依赖的版本号, 当你的项目中要使用多个相同的版本号,先使用全局变量定义, 在使用${变量名}


5.3 指定资源位置


  <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>


默认没有使用resources的时候, maven执行编译代码时, 会把src/main/resource目录中的文件拷贝到target/classes目录中。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
Java 应用服务中间件 程序员
Maven教程--下(包括手动实现)
Maven教程--下(包括手动实现)
81 0
|
1月前
|
Web App开发 Java 测试技术
《手把手教你》系列基础篇之(四)-java+ selenium自动化测试- 启动三大浏览器(下)基于Maven(详细教程)
【2月更文挑战第13天】《手把手教你》系列基础篇之(四)-java+ selenium自动化测试- 启动三大浏览器(下)基于Maven(详细教程) 上一篇文章,宏哥已经在搭建的java项目环境中实践了,今天就在基于maven项目的环境中给小伙伴们 或者童鞋们演示一下。
66 1
|
4月前
|
存储 Java 测试技术
JAVA-MAVEN初学者教程(配置、pom.xml、依赖管理等)
JAVA-MAVEN初学者教程(配置、pom.xml、依赖管理等)
236 0
|
7月前
|
XML Java Maven
IDEA安装及创建Maven项目教程【史上最详细】(二)
IDEA安装及创建Maven项目教程【史上最详细】(二)
654 0
|
6月前
|
Java Linux Apache
Maven下载和配置教程:Windows、Mac和Linux系统安装指南
Maven下载和配置教程:Windows、Mac和Linux系统安装指南
310 0
|
7月前
|
搜索推荐 Java 应用服务中间件
【Maven】IDEA部署配置Maven项目教程,IDEA配置Tomcat(2019.3.3)(2023.1.3)
当涉及到软件开发和项目管理时,使用一个可靠的构建工具是非常重要的。Maven是一个广泛使用的构建工具,它为Java项目提供了一种简化的构建过程和依赖管理。 在本文中,我们将探讨如何部署Maven并开始使用它来构建您的项目。我们将介绍所需的步骤,并向您提供一些有用的提示和建议。
【Maven】IDEA部署配置Maven项目教程,IDEA配置Tomcat(2019.3.3)(2023.1.3)
|
3月前
|
Java 应用服务中间件 Maven
idea配置本地maven保姆级教程
idea配置本地maven保姆级教程
282 0
|
1月前
|
Java 测试技术 Maven
《手把手教你》系列基础篇之(二)-java+ selenium自动化测试-环境搭建(下)基于Maven(详细教程)
【2月更文挑战第11天】《手把手教你》系列基础篇之(二)-java+ selenium自动化测试-环境搭建(下)基于Maven(详细教程) 是一个软件项目管理和综合工具。基于项目对象模型(POM)的概念,Maven可以从一个中心资料片管理项目构建,报告和文件。由于现在企业和公司中Java的大部分项目都是基于Maven, 因此宏哥为了照顾到企业或者公司用的java项目中用到maven的童鞋或者小伙伴们,这里也简单的介绍和分享一下。在Maven项目中使用Selenium. 非常简单。
68 3
|
6月前
|
XML Java 测试技术
Maven教程
Maven教程
139 0
|
4月前
|
存储 Java 关系型数据库
MAVEN 傻瓜式快速教程
MAVEN 傻瓜式快速教程
52 0

热门文章

最新文章

推荐镜像

更多