Maven 概念

Maven 是一个项目管理工具,它包含了一个项目对象模型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。

作用

Maven 的依赖管理

Maven 的一个核心特性就是依赖管理。当我们涉及到多模块的项目(包含成百个模块或者子项目),管理依赖就变成 一项困难的任务。Maven 展示出了它对处理这种情形的高度控制。

项目的一键构建

我们的项目,往往都要经历编译、测试、运行、打包、安装 ,部署等一系列过程。 什么是构建? 指的是项目从编译、测试、运行、打包、安装 ,部署整个过程都交给 maven 进行管理,这个 过程称为构建。 一键构建指的是整个构建过程,使用 maven 一个命令可以轻松完成整个工作。

存放jar包的坐标文件

Maven仓库

分类

  1. 本地仓库

用来存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包, 优先从本地仓库查找

默认本地仓库位置在 ${user.dir}/.m2/repository,${user.dir}表示 windows 用户目录。
  1. 远程仓库

远程仓库:如果本地需要插件或者 jar 包,本地仓库没有,默认去远程仓库下载。 远程仓库可以在互联网内也可以在局域网内。

  1. 中央仓库

中央仓库 :在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中 央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包 含了世界上大部分流行的开源项目构件。

maven 的工作需要从仓库下载一些 jar 包,如下图所示,本地的项目 A、项目 B 等都会通过 maven 软件从远程仓库(可以理解为互联网上的仓库)下载 jar 包并存在本地仓库,本地仓库 就是本地文 件夹,当第二次需要此 jar 包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库 理解为缓存,有了本地仓库就不用每次从远程仓库下载了

仓库的示意图

修改Maven默认本地仓库地址

在maven项目目录下,打开cmd 在maven项目cmd输入命令

mvn compile

替换阿里云的镜像源

阿里云镜像源

  
		  alimaven  
		  aliyun maven  
		  http://maven.aliyun.com/nexus/content/groups/public/
		  central          

Maven工程 目录结构

作为一个 maven 工程,它的 src 目录和 pom.xml 是必备的。

进入 src 目录后,我们发现它里面的目录结构如下:

src/main/java —— 存放项目的.java 文件 src/main/resources —— 存放项目资源文件,如 spring, hibernate 配置文件 src/test/java —— 存放所有单元测试.java 文件,如 JUnit 测试类 src/test/resources —— 测试资源文件 target —— 项目输出位置,编译后的 class 文件会输出到此目录 pom.xml——maven 项目核心配置文件 注意:如果是普通的 java 项目,那么就没有 webapp 目录。

运行

进入 maven 工程目录(当前目录有 pom.xml 文件),运行 tomcat:run 命令

根据上边的提示信息,通过浏览器访问:http://localhost:8080/maven-helloworld/

Maven命令 compile

compile 是 maven 工程的编译命令,作用是将 src/main/java 下的文件编译为 class 文件输出到 target 目录下。

首先进入项目的根目录,cmd 进入命令状态,执行 mvn compile,

test

test 是 maven 工程的测试命令 mvn test,会执行 src/test/java 下的单元测试类。 cmd 执行 mvn test 执行 src/test/java 下单元测试类,

clean

clean 是 maven 工程的清理命令,执行 clean 会删除 target 目录及内容。

package

package 是 maven 工程的打包命令,对于 java 工程执行 package 打成 jar 包,对于 web 工程打成 war 包。

install

install 是 maven 工程的安装命令,执行 install 将 maven 打成 jar 包或 war 包发布到本地仓库

Maven指令的生命周期

同一套生命周期,执行后边操作,会自动执行前边所有的操作

Clean Lifecycle 在进行真正的构建之前进行一些清理工作。

Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。

Site Lifecycle 生成项目报告,站点,发布站点。

idea maven maven坐标

去本地仓库去寻找jar包

idea的maven配置
  1. 打开 File Settings 配置 maven

  2. idea 中创建一个 maven 的 web 工程

  3. 选择 idea 提供好的 maven 的web 工程模板

​ 3.1这里也可以选择不勾选工程模版创建项目,这时候会出现缺少一些文件夹

<?xml version="1.0" encoding="UTF-8"?>

    4.0.0
    
    com.hanser
    maven_java_1
    1.0-SNAPSHOT
    
    jar

    
        11
        11
    


最终目录结构不完整,需要手动补齐

​ 3.2 选择 idea 提供好的 maven 的web 工程模板

​ 3.3 选择java项目的 骨架/工程模版

  1. 点击 Next 填写项目信息

5 点击 Next,此处不做改动

6 点击 Next 选择项目所在目录

7 点击 Finish 后开始创建工程,耐心等待,直到出现如下界面

8 手动添加 src/main/java 目录,如下图右键 main 文件夹 New Directory

9 创建一个新的文件夹命名为 java

10 点击 OK 后,在新的文件夹 java 上右键 Make Directory as Sources Root

创建一个 Servlet

要解决问题,就是要将 servlet-api-xxx.jar 包放进来,作为 maven 工程应当添加 servlet 的坐标,从而 导入它的 jar

Maven坐标 导入依赖的jar包

在对应的Maven模块中,使用依赖导入对应的jar包

<?xml version="1.0" encoding="UTF-8"?>

    4.0.0

    com.hanser
    maven_java_2
    1.0-SNAPSHOT

    
        11
        11
    
    
    
        
            junit
            junit
            4.11
            test
        
    


导入jar包后的操作

在 pom.xml 文件添加坐标

直接打开 hello_maven 工程的 pom.xml 文件,再添加坐标

添加 jar 包的坐标时,还可以指定这个 jar 包将来的作用范围。
每个 maven 工程都需要定义本工程的坐标,坐标是 maven 对 jar 包的身份定义,比如:入门程序的
坐标定义如下:

com.itheima

hello_maven

    
0.0.1-SNAPSHOT
 :打包类型
jar:执行 package 会打成 jar 包
war:执行 package 会打成 war 包
pom :用于 maven 工程的继承,通常父工程设置为 pom

坐标的来源方式

添加依赖需要指定依赖 jar 包的坐标,但是很多情况我们是不知道 jar 包的的坐标,可以通过如下方式查询:

项目中添加的坐标

Maven插件 设置 jdk 编译版本

本教程使用 jdk1.8,需要设置编译版本为 1.8,这里需要使用 maven 的插件来设置: 在 pom.xml 中加入:




org.apache.maven.plugins
maven-compiler-plugin

1.8
1.8
UTF-8




    

这里可以使用idea中的快捷键 alt + insert 导入依赖和插件

Maven web项目

不使用骨架的方式导入jar包

1 设置打包方式为war

<?xml version="1.0" encoding="UTF-8"?>

    4.0.0

    com.hanser
    maven_web_2
    1.0-SNAPSHOT
    
        
            
            
                org.apache.tomcat.maven
                tomcat7-maven-plugin
                2.2
                
                    80
                    /day23
                
            
        
    

    war

    
        11
        11
    
    
    


可以使用run -> Edit Configuration 设置快捷运行tomcat插件的方式

依赖范围

配置的jar对那些环境是有效的

scope

provided

注意

如果容器中(Tomcat)带有jar包,在导入jar包的时候没有配置 provided 的时候 会造成jar包冲突,原因是因为Tomcat中也是存在jar包的 然后在打包的时候会把 导入的jar也打进去,这样就冲突了。

编写 servlet

在 src/main/java 中创建 ServletTest

此时点击 idea 最右侧 Maven Projects, 就可以看到我们新添加的 tomcat7 插件 双击 tomcat7插件下 tomcat7:run 命令直接运行项目

也可以直接点击如图按钮,手动输入 tomc7:run 命令运行项目

点击后弹出如下图窗口

运行结果

maven工程运行调试 端口占用处理

重新执行 tomcat:run 命令重启工程,重启之前需手动停止 tomcat,否则报下边的错误:

断点调试

点击如图所示选项

在弹出窗口中填写如下信息

完成后先 Apply 再 OK 结束配置后,可以在主界面找到我们刚才配置的操作名称

如上图红框选中的两个按钮,左侧是正常启动,右侧是 debug 启动。

总结 常用的 maven 命令

常用 的 maven 命令包括: compile:编译 clean:清理 test:测试 package:打包 install:安装

坐标定义
在 pom.xml 中定义坐标,内容包括:groupId、artifactId、version,详细内容如下:

cn.itcast.maven

maven-first

0.0.1-SNAPSHOT
 :打包类型
jar:执行 package 会打成 jar 包
war:执行 package 会打成 war 包
pom :用于 maven 工程的继承,通常父工程设置为 pom
pom 基本配置
pom.xml 是 Maven 项目的核心配置文件,位于每个工程的根目录,基本配置如下:
 :文件的根节点 .
 : pom.xml 使用的对象模型版本
 :项目名称,一般写项目的域名
 :模块名称,子项目名或模块名称
 :产品的版本号 . 
 :打包类型,一般有 jar、war、pom 等
 :项目的显示名,常用于 Maven 生成的文档。 
 :项目描述,常用于 Maven 生成的文档
 :项目依赖构件配置,配置项目依赖构件的坐标
 :项目构建配置,配置编译、运行插件等

0.0.1-SNAPSHOT :打包类型 jar:执行 package 会打成 jar 包 war:执行 package 会打成 war 包 pom :用于 maven 工程的继承,通常父工程设置为 pom

### pom 基本配置

```html
pom.xml 是 Maven 项目的核心配置文件,位于每个工程的根目录,基本配置如下:
 :文件的根节点 .
 : pom.xml 使用的对象模型版本
 :项目名称,一般写项目的域名
 :模块名称,子项目名或模块名称
 :产品的版本号 . 
 :打包类型,一般有 jar、war、pom 等
 :项目的显示名,常用于 Maven 生成的文档。 
 :项目描述,常用于 Maven 生成的文档
 :项目依赖构件配置,配置项目依赖构件的坐标
 :项目构建配置,配置编译、运行插件等

1.《Maven》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《Maven》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/2371900.html