二十五、Maven

Maven是什么?

Maven 是一个项目管理工具

为什么使用Maven?

能帮你构建工程,管理 jar包,不需要每个项目都放重复的jar包;编译代码,还能帮你自动运行单元测试,不需要自己单元测试代码;打包,生成报表,甚至能帮你部署项目,生成 Web 站点。

2、Maven依赖管理

上面是依赖管理?

依赖管理是Maven的主要核心功能:Maven对jar包管理的过程

在这里插入图片描述

3、Maven一键部署

怎么一键部署?
在这里插入图片描述
这时候项目自动运行了。

而且还提供了资源访问url
在这里插入图片描述

  • pom.xml是存储jar包坐标的。

04、Maven安装

  • 1-把解压包放在没有中文没有空格的目录即可。
    在这里插入图片描述
  • 2、配置环境变量
    在这里插入图片描述
  • 3-编辑Path
    在这里插入图片描述
    注意:maven环境变量依赖于Java_HOME,所以这个要存在。

测试配置环境变量好了么有:
在这里插入图片描述

5、仓库种类&彼此关系

jar包仓库有3类:本地仓库、远程仓库、中央仓库

本地仓库是指Maven安装之后,会默认创建个本地仓库来装jar包,但是刚安装完Maven肯定是没有jar包的,而在联网的情况下,当Maven项目使用本地仓库时没有jar包,就会去中央仓库下载(好几G,涵盖几乎所有jar包)。一般公司内都会有专门的远程仓库(又称,私服),利用内网来给本地仓库上传(因为不需要全部jar,为了效率),一部分可能来自中央仓库。

图示:
在这里插入图片描述
怎么修改本地仓库的路径?

  • 1、找到Maven目录下的conf/settings.xml
  • 2、修改添加此处:
    在这里插入图片描述

6、Maven标准目录结构

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

7、Maven常用命令

  • 1、compile

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

  • 2、test

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

  • 3、clean

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

  • 4、package

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

  • 5、install

install 是 maven 工程的安装命令,执行 install 将 maven 打成 jar 包或 war 包发布到本地仓库。
从运行结果中,可以看出:
当后面的命令执行时,前面的操作过程也都会自动执行,

执行步骤具有包含关系:

在这里插入图片描述

8、Maven生命周期

在这里插入图片描述
clean的作用:

【一般一键部署的时候,都要清除编译文件做准备。】
有时候,项目的代码是分工写的,你集合别人的代码来部署,部署之前必须先清楚别人编译好的target文件,因为毕竟每个人的开发环境不同。

deploy发布:
编译到安装可以直接使用命令进行操作,而发布命令操作之前需要配置一些文件。

9、Maven概念模型图

在这里插入图片描述

10、IDEA集成Maven插件

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

11、用骨架创建Maven的Java工程

【querystart模板】
需要在main目录下补resourse(还有右键设置为Resourse root)

12、不用骨架创建Maven的Java工程

建议不使用模板创建

13、用骨架创建Maven的Web工程

【webapp模板】
需要在main目录下补java(还有右键设置为sourse root)

14、maven工程servlet实例之指定web资源包

使文件变成web资源包,变成web资源可以创建JSP等等文件。
在这里插入图片描述
在这里插入图片描述

15、maven工程servlet实例之导入项目依赖的jar包

  • 1、配置web.xml
    在这里插入图片描述
    配置了什么?
    1、资源名
    2、虚拟目录。(“/”代表无虚拟目录)

  • 2、配置pom.xml,给jar包标记坐标(导包)
    在这里插入图片描述
    启动tomcat服务器
    在这里插入图片描述
    访问资源后,500

16、maven工程servlet实例之jar包冲突解决

为什么出现500?

因为Maven没有觉得这个servlet不是servlet,但是我的明明使servlet。又是为什么呢?
Maven是自带tomcat插件的,它不需要我们之前本地安装的tomcat了,也就是说tomcat有什么,Maven就有什么。

但是,你看看tomcat的lib目录
在这里插入图片描述
这2个jar包的名字是不是跟下面一样?
在这里插入图片描述
所以,这些jar包冲突了!

那么我们怎么解决呢?
在这里插入图片描述
只要声明被导入的jar包的作用域即可,让这些导入的jar包只在执行代码的时候有用。
scope:

provided:只在写代码的时候(编译的时候),才会使用该jar包
test:这会在测试的时候,才会使用该jar包。

17、maven工程运行环境修改

添加tomcat7插件
在这里插入图片描述
添加jdk插件:使用jdk1.8编译
在这里插入图片描述

如果记不住可以添加做模板,然后添加的时候输入模板名称就可以添加了。
在这里插入图片描述

18、maven的java工程取mysql数据库数据

pom.xml配置jar包坐标:

        <!--  Mysql的驱动包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
            <scope>runtime</scope>
        </dependency>
<!--        单元测试jar包-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

查询数据库:
也没什么,只是对JDBC的回顾。

public class ProvinceDaoImpl implements ProvinceDao {
    public List<Province> findAll() throws ClassNotFoundException {
        Connection connection= null;
        PreparedStatement ps = null;
        ResultSet resultSet = null;
        //将结果集对象转换成java的List集合
        List<Province> list = new ArrayList<Province>();
        try {
            //注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //获取数据库连接对象
            connection = DriverManager.getConnection("jdbc:mysql:///province", "root", "root");
            //获取执行SQL的对象,并执行SQL
            ps = connection.prepareStatement("select  * from province");
            //获取查询结果集对象
            resultSet = ps.executeQuery();
            //遍历查询结果集对象
            while (resultSet.next()){
                //封装JavaBean
                Province p = new Province();
                p.setId(resultSet.getInt("id"));
                p.setName(resultSet.getString("name"));
                list.add(p);
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            resultSet.close();
            ps.close();
        }
        return list;
    }
}

单元测试:

public class MyslqTest {
    @Test
    public void findAll() throws ClassNotFoundException {
        ProvinceDaoImpl provinceDao = new ProvinceDaoImpl();
        List<Province> all = provinceDao.findAll();
        System.out.println(all);
    }
}
Maven建议配合:课程讲义阅读。
发布了65 篇原创文章 · 获赞 1 · 访问量 1457

猜你喜欢

转载自blog.csdn.net/weixin_45097731/article/details/105005153