Maven

Maven

一、 引言

项目中jar包资源越来越多,jar包的管理越来越繁琐。
1> 要为每个项目手动导入所需的jar,需要搜集全部jar -- 繁琐
2> 项目中的jar如果需要版本升级,就需要再重新搜集jar -- 复杂
3> 相同的jar在不同的项目中保存了多份 -- 存储冗余,散乱
java项目需要一个统一的便捷的管理方案。

二、 介绍

Maven这个单词来自于意第绪语(犹太语),意为知识的积累.
Maven是一个基于项目对象模型(POM)的概念的纯java开发的开源的项目管理工具。主要用来管
理java项目,进行依赖管理(jar包依赖管理)和项目构建(项目编译、打包、测试、部署)。此外还能
分块开发,提高开发效率。
项目构建就是将我们工程中的Java源文件,框架的配置文件,jsp,HTML,css,js,图片等静态
资源作为原材料,去组织生产出一个可以运行的项目的过程。之前都是idea工具帮助我们干这些
事情,现在看看maven该如何做这些事情。

三、 Maven安装

3.1 下载maven

下载maven
http://us.mirrors.quenda.co/apache/maven/maven-3/3.5.4/binaries/

3.2 Maven安装

3.2.1 解压
注意: 解压文件尽量不要放在含有中文或者特殊字符的目录下。
解压后,有如下目录:
`bin:含有mvn运行的脚本`
`boot:含有plexus-classworlds类加载器框架,Maven 使用该框架加载自己的类库。`
`conf:含有settings.xml配置文件`
`lib:含有Maven运行时所需要的java类库`
3.2.2 环境变量
maven依赖java环境,所以要确保java环境已配置好 (maven-3.3+ 需要jdk7+)
maven本身有2个环境变量要配置:
`MAVEN_HOME = maven的安装目录`
`PATH = maven的安装目录下的bin目录`

四、 maven配置

4.1 本地仓库

maven的conf目录中有 settings.xml ,是maven的配置文件,做如下配置:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
 <!-- 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:\Program Files\maven\myrepository</localRepository>

4.2 JDK配置

在 <profiles> 标签中 增加 一个 <profile> 标签,限定maven项目默认的jdk版本.
内容如下:
<profiles>
  <!-- 在已有的profiles标签中添加profile标签 -->
<profile>  
    <id>myjdk</id>  
    <activation>  
      <activeByDefault>true</activeByDefault>  
      <jdk>1.8</jdk>  
    </activation>  
    <properties>  
      <maven.compiler.source>1.8</maven.compiler.source>  
      <maven.compiler.target>1.8</maven.compiler.target>
      <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    </properties>  
  </profile>
</profiles>
<!-- 让增加的 profile生效 -->
<activeProfiles>
  <activeProfile>myjdk</activeProfile>
</activeProfiles>

4.3 Maven的常用命令

mvn compile:编译
mvn clean:清理
mvn test:测试(要遵循测试类命名规范)
mvn package:打包(打成jar包)
mvn install:安装(把打成的jar包放到本地仓库这种)
mvn -version 查看maven版本号

五、 仓库

存储依赖的地方。
仓库中不仅存放依赖,而且每个依赖都有唯一标识(坐标),供java项目索取。

5.1 仓库分类

仓库分类如下:
在这里插入图片描述

当需要依赖时,会从仓库中取查找,优先顺序为:
本地仓库 > 私服(如果配置了的话) > 公共仓库(如果配置了的话) > 中央仓库

5.2 本地仓库

即在 settings.xml 中配置的目录。
使用过了的依赖都会自动存储在本地仓库中,后续可以复用。

在这里插入图片描述

5.3 远程仓库

5.3.1 中央仓库
Maven 中央仓库是由 Maven 社区提供的仓库,不用任何配置,maven中内置了中央仓库的地址。
其中包含了绝大多数流行的开源Java构件。
https://mvnrepository.com/ 可以搜索需要的依赖的相关信息(仓库搜索服务) (重点)
http://repo.maven.apache.org/maven2/ 中央仓库地址

在这里插入图片描述

5.3.2 公共仓库 (重点)
除中央仓库之外,还有其他远程仓库。
比如aliyun仓库( http://maven.aliyun.com/nexus/content/groups/public/ )
中央仓库在国外,下载依赖速度过慢,所以都会配置一个国内的公共仓库替代中央仓库。
<!--setting.xml中添加如下配置-->
<mirrors>
<mirror>
    <id>aliyun</id> 
    <!-- 中心仓库的 mirror(镜像) -->
    <mirrorOf>central</mirrorOf>  
    <name>Nexus aliyun</name>
    <!-- aliyun仓库地址 以后所有要指向中心仓库的请求,都会指向aliyun仓库-->
    <url>http://maven.aliyun.com/nexus/content/groups/public</url> 
  </mirror>
</mirrors>
5.3.3 私服(了解)
公司范围内共享的仓库,不对外开放。
可以通过 nexus来创建、管理一个私服。

六、 idea-maven

6.1 在idea中关联maven

在idea中关联本地安装的maven,后续就可以通过idea使用maven,管理项目。

在这里插入图片描述
在这里插入图片描述

6.2 创建Maven项目

6.2.1 新建项目
新建项目,要选择 “maven” 选项

如下选项
在这里插入图片描述
设置项目名
在这里插入图片描述

6.2.2 指定项目名

在这里插入图片描述

6.2.3 项目位置

项目位置如下
在这里插入图片描述

6.2.4 项目结构
1> src/main/java 存放源代码,建包,放项目中代码(service,dao,User,....)
2> src/main/resources 书写配置文件,项目中的配置文件(jdbc.properties)
3> src/test/java 书写测试代码,项目中测试案例代码
4> src/test/resources 书写测试案例相关配置文件
5> 项目根/pom.xml (project object model) maven项目核心文件,其中定义项目构建方式,声明依
赖等
注意:项目中的建包,建类,执行,都和普通项目无差异

在这里插入图片描述

6.2.5 项目类型
根据项目类型,在 pom.xml 中做出对应配置,添加配置: <packaging>war/jar</packaging>
<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">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.qf</groupId>
  <artifactId>test01</artifactId>
  <version>1.0-SNAPSHOT</version>
  <!-- 打包方式,如果是java项目则用 jar,
    如果是web项目则用war -->
  <!--<packaging>war</packaging>-->
  <packaging>jar</packaging>
</project>

6.3 导入依赖jar

建好项目后,需要导入需要的jar,要通过【坐标】
1. 每个构件都有自己的坐标(标识) = groupId + artifactId + version = 项目标识 + 项目名 + 版本号
2. 在maven项目中只需要配置坐标,maven便会自动加载对应依赖。删除坐标则会移除依赖
6.3.1 查找依赖
依赖查找服务: https://mvnrepository.com/ ,获得依赖的坐标,在maven项目中导入。

查找依赖坐标
在这里插入图片描述
在这里插入图片描述

6.3.2 导入依赖

在项目的pom.xml文件添加依赖
在这里插入图片描述

6.3.3 同步依赖
引入坐标后,同步依赖,确认导入。

窗口右下角弹窗,刷新依赖,使新加的配置被maven加载

在这里插入图片描述

6.4 创建web项目

6.4.1 打包方式
pom.xml中设置 <packaging>war</packaging>

web项目打包方式为: war

在这里插入图片描述

6.4.2 web依赖
导入 JSP 和 Servlet 和 JSTL 依赖,使项目具有web编译环境
<?xml version="1.0" encoding="UTF-8"?>
<project ...>
 ...
  <packaging>war</packaging>
<!-- 导入JSP 和 Servlet 和 JSTL 依赖 -->
  <dependencies>
    <dependency>
      <!-- jstl 支持 -->
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <dependency>
      <!-- servlet编译环境 -->
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <!-- jsp编译环境 -->
      <groupId>javax.servlet</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>
6.4.3 webapp目录
按照maven规范,新建web项目特有目录

新建如下目录和文件
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    version="4.0">
<!-- 这是一个空白的web.xml文件模板 -->
</web-app>
6.4.4 定义Servlet和Jsp

在这里插入图片描述
在这里插入图片描述

6.5 部署web项目

6.5.1 新增Tomcat

新增Tomcat
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.5.2 部署web项目

部署web项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

war: 这是先打成war包,再发布,正常的发布就是用的这种。
工程target目录下会生成war包, 并且解压后的war包会被部署到tomcat的webapp 目录下。
注意:如果application-context 设置为 /, tomcat目录下不会有解压后的war文件,只有指定文件
目录,才会生成文件夹,这个文件夹作为项目的根目录
war exploded : 模式是直接把文件夹、jsp页面 、classes等等移到Tomcat 部署文件夹里面,进行
加载部署。因此这种方式支持热部署,一般在开发的时候也是用这种方式。
启动Tomcat
6.5.3 启动Tomcat

在这里插入图片描述
在这里插入图片描述

6.6 利用Maven插件运行Web项目

<build>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <configuration>
            <!-- 热部署 -->
        <contextReloadable>true</contextReloadable>
        <port>8080</port> <!-- 端口号 -->
        <path>/</path> <!-- 发布的项目路径 -->
        </configuration>
       </plugin>
    </plugins>
</build>

6.7 依赖生命周期

项目中导入的依赖可以做生命周期的管理

maven有生命周期如下:
compile(默认值):缺省值,适用于所有阶段(测试,编译,运行,打包),会随着项目一起发
布(被打包)
provided:类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet-api.jar
参与测试,编译,不会被打包
runtime:只在运行时使用,如 mysql-connector-java驱动jar,适用运行和测试阶段,会被一
起发布
test:只在测试时使用,用于编译和运行测试代码,如 junit.jar,不会随项目发布
system:类似provided,但Maven不会在Repository中查找它,要在本地磁盘目录中查找
参与编译,测试,打包,运行。

七、 maven指令

7.1 命令行

通过idea打开 cmd ,然后执行maven指令

在这里插入图片描述
在这里插入图片描述

7.2 maven面板

idea中有maven面板,其中可以快速执行maven指令
maven面板

在这里插入图片描述

八、细节注意

8.1 mvn test 不执行单元测试

mvn test 使用的是surefire插件,它按照指定格式的类名来查找匹配的测试类
默认包含的测试类:
*/Test.java
*/Test.java
*/TestCase.java
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值