• maven


    1.Java开发项目需要做的工作?
        1.分析项目要做什么,知道项目有哪些组成部分
        2.设计项目,通过哪些步骤,哪些技术,需要多少人,多长时间
        3.组建团队,招人,购置设备,服务器,软件等等
        4.开发人员写代码,然后测试自己写的代码,重复。。
        5.测试人员测试代码,重复

    2.传统的项目开发的问题,没有使用maven管理
        1.很多模块,模块之间有关系,手工管理关系,很繁琐
        2.需要很多第三方功能,需要很多jar包,需要手工从网络获取jar包
        3.需要管理jar包的版本
        4.管理jar包之间的依赖,你的项目要使用a.jar ,需要使用b.jar里面的类,必须首先获取b.jar才可以,然后才能使用a.jar

    3.改进项目开发,使用maven
        1.maven可以管理jar文件
        2.自动下载jar和它的文档,源代码
        3.管理jar直接的依赖,a.jar需要b.jar。maven会自动下载b.jar
        4.管理你需要的jar版本
        5.帮你编译程序,把Java编译为class
        6.帮你测试你的代码是否正确
        7.帮你打包文件,形成jar文件,或者war文件
        8.帮你部署项目
    总结:管理jar包,编译,测试,打包,部署;

    4.构建;项目的构建
        构建是面向过程的,就是一些步骤,完成代码的编译,测试,运行,打包,部署等等。maven支持的构建包括有:
        1.清理:把之间羡慕编译的东西删除掉(target),为新的编译代码做准备 mvn clean
        2.编译:把程序源代码编译为执行代码(编译的是src/main下的Java),Java.class文件  mvn compile  mvn test-compile
        javac不一样,它一次只能编译一个文件
        3.测试:maven可以执行测试程序代码,验证你的功能是否正常,批量的,maven同时执行多个测试代码,同时测试很多功能(测试的是test/java下的程序)   mvn-test
        4.报告:生成测试结果的文件,测试通过没有
        5.打包:把你 的项目中的结果文件,通常是Java程序,压缩文件是jar扩展名的,对于web应用,压缩文件扩展名是.war  mvn package
        6.安装:把5中生成的文件jar/war安装到本机仓库  mvn install
        7.部署:把程序安装好可以执行;  mvn deploy

    5.maven的核心概念:用好maven,用好这些概念
        1.POM:一个文件,名称是pom.xml,pom(project object model)翻译过来叫做项目对象模型,maven把一个项目当一个模型使用,控制maven构建项目的过程,管理jar依赖;
        2.约定的目录结构:maven项目的目录和文件的位置都是规定的
        3.坐标:唯一的字符串,用来表示资源的(groupID,artifactID,version)
        4.依赖管理;管理你的项目可以使用jar文件
        5.仓库管理:(了解)你的资源存放的地方
        6.生命周期:(了解)maven工具构建项目的过程
        7.插件和目标:(了解)执行maven构建的时候使用的工具是插件
        8.继承
        9.聚合

    6.maven工具的配置:
        1.需要下载maven安装包,解压安装包,解压到一个非中文的目录
        2.配置环境变量:在系统的环境变量中,指定一个M2_HOME的名称,指定它的值是maven工具安装目录,bin之前的目录;M2_HOME    =E:apache-mavenapache-maven-3.5.2,在把M2_HOME    加入到Path中    
        3.验证;在cmd中输入mvn -v
    还不懂;https://www.bilibili.com/video/BV1dp4y1Q7Hf?p=6

    7.maven约定的目录结构,约定是大家都遵循的一个规则
    1)maven项目在磁盘中都是一个文件夹(项目-hello)
    hello/
        --/src
            --/main  #放主程序Java代码和配置文件
                 --/java  #程序包和包中的Java文件
             --/resource  #Java程序中要使用的配置文件
            --/test
             --/java  #测试程序包和包中的Java文件
             --/resource  #测试Java程序中要使用的配置文件
        --/pom.xml  #maven的核心文件(maven项目必须有)

    8.疑问:mvn.compile编译src/main目录下所有的Java文件的
        1.为什么要下载?
        maven工具执行的操作需要很多插件
        2.下载了什么?
        jar文件--叫做插件--完成某些功能
        3.下载的东西放到了哪里?
        默认仓库中(本机仓库):C:UsersAdministrator.m2 epository

        执行mvn compile ,结果是在项目的根目录下生成一个target目录,叫结果目录,是maven编译的Java程序,最后的class

    9.设置本机存放资源的目录位置;
        1.先将Setting.xml备份;
        2.E:apache-mavenmaven_repository拷贝
        3.进入Setting.xml中,找到<localRepository>修改;注意格式;

    10.仓库
        1.仓库是什么?:是存放东西的,存放maven使用的jar包,,maven使用的插件和项目中使用的jar

        2.仓库的分类:
            1.本地仓库:就是你的个人电脑上的文件夹,存放各种jar
            2.远程仓库:
                1).中央仓库:在互联网上,使用网络才能使用的仓库,是做权威的,所有的开发人员都共享使用的一个集中的仓库;也叫中央仓库
                2).中央仓库的镜像:就是中央仓库的备份,在各大洲,重要的城市都是镜像,目的是为了减轻中央仓库的压力;
                3.私服:在公司内部,在局域网中使用,不对外使用;在公司中搭建一个服务器,用自己的服务器中的仓库;(有能力的公司推荐)

    11.仓库的使用;maven仓库的使用【不需要人为参与】
        开发人员需要使用MySQL的驱动--maven首先查本地仓库是否有对应的jar包--私服--镜像----中央仓库(直到找到为止)

    12.pom:项目
        groupId,artifactId和Version组成一个坐标,在互联网中标识唯一项目;每个项目必须有坐标;
    <groupId>com.bjpowernode</groupId> #公司域名的倒写
    <artifactId>welcome</artifactId>   #自定义项目名称
    <version>1.0-SNAPSHOT</version>    #自定义版本号;

        www.mvnrepository.com:搜索使用的中央仓库,使用groupid或者artifactID作为搜索条件;
    packing:打包后压缩文件的扩展名,默认是jar,web应用是war,可以不写
    dependencies和dependency;你的项目中要使用的各种资源说明;相当于是Java中的import
    <dependencies>
    <!--是我们项目中要使用的MySQL驱动jar包,我们从官网上利用坐标来获取文件,下载-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.44</version>
    </dependency>
    </dependencies>

    properties:定义一些配置属性,例如字符集等;
    <properties>
          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
          <maven.compiler.source>12</maven.compiler.source>
          <maven.compiler.target>12</maven.compiler.target>
    </properties>

    build:maven在进行项目的构建时,配置信息,

    13.maven生命周期,maven的命令,maven的插件
        1.生命周期:就是maven构建项目的过程,清理,编译,测试,报告,打包,安装,都是
        2.命令:maven独立使用,通过命令,完成maven的生命周期的执行、maven可以使用命令,完成项目的清理,编译,测试等;
        3.插件:maven命令执行时,真正完成功能的是插件,插件就是一些jar文件,一些类

    14.单元测试(测试方法);
        1.Junit,是一个专门测试的框架(工具),测试的是类中的方法,每一个方法都是独立测试的;方法是测试的基本单位(单元);然后maven借助单元测试批量测试方法是否符合预期;
        2.使用步骤:
            1.加入依赖:在pom。xml中
            2.在maven项目中的src/test/java 目录下,创建测试程序。推荐的创建类和方法的提示;
            1.测试类的名称,是Test+你要测试的类名
            2.测试的方法名称是:Test+方法名称;

            例如你要测试hellomaven。创建测试类:Testhellomaven
            @Test
            public void testAdd(){
                测试hellomaven的add方法是否正确
    }
    其中testadd方法叫做测试方法,它的定义规则
            1.方法是public的,必须是;
            2.方法没有返回值,必须是
            3.方法名称是自定义的,推荐是Test+方法名称
            4.在方法的上面加注释;@Test

    15.mvn compile:maven默认会把src/main/resources下的所有配置文件以及src/main/java下的所有java文件打包或发布到targetclasses下面

    16.在IDEA中设置maven,让IDEA和maven结合使用。IDEA中有一个内置的maven,一般不使用内置的。因为内置的修改maven的配置不方便。使用自己安装的maven,需要覆盖IDEA的默认的设置,让IDEA指定maven的安装;

    17.配置入口;settings(配置当前)--Build,Execution。Deployment--Build Tools--Maven--在这里我们配置maven的home,settings和本地仓库--Runner--配置jre和VM Option(填写 -DarchetypeCatalog=internal)
     -DarchetypeCatalog=internal:maven项目在创建时,会联网下载一个模板文件,比较慢,加上后变快
    个人总结:在使用idea创建maven项目时,要在maven的runner中要将Delegate IDE build/run actions to Maven勾选,它的意思是将ide构建/运行操作委托给maven ,如果不勾选,就会报报错程序包xxx不存在的异常!请重视

    18.使用模板创建普通的JavaSe项目;maven-archetype-quickstart
    创建web工程:maven-archetype-webapp

    19.Reimport:重新导入,相当于刷新功能,用于项目中内容的更变时IDEA没响应;

    20.依赖范围;使用scope表示
        1.scope的值有;compile ,test ,provided  默认是compile
        2.scope表示依赖使用的范围,也就是在maven构建项目的那些阶段中起作用
            maven构建项目:清理 编译 测试 打包 安装 部署
    举例:
    //Junit依赖的范围是test阶段
    <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.13</version>
          <scope>test</scope>
        </dependency>

    compile;所有阶段都会用到,
    provided:编译 测试阶段要用,后续阶段不要用;(也就是Tomcat本身有,不需要自带)

    21.在pom文件中添加依赖,maven会时刻自动检测pom文件,所以,当我们在pom文件中添加依赖,maven会自动下载依赖存入本地仓库;

    22.maven的常用操作:
        1.maven的属性设置:<properties>设置maven的常用属性
        2.maven的全局变量:1.在<properties>通过自定义标签声明变量(标签名就是变量名)
                   2.在pom.xml文件中的其他位置,使用${标签名}使用变量的值;
                   3.自定义全局变量一般是定义依赖的版本号,当你的项目中要使用多个相同的版本号,先使用全局变量定义,在使用${变量名}
        3.资源插件:
    <resources>
                <resource>
                    <!-- 指定resources插件处理哪个目录下的资源文件 -->
                    <directory>src/main/java</directory>
                    <!--注意此次必须要放在此目录下才能被访问到 -->
                    <targetPath>META-INF/resources</targetPath>
                    <includes>
                        <include>**/*.properties</include>
                <include>**/*.xml<include>
                    </includes>
                </resource>
            </resources>
    在mybatis课程中涉及到;默认没有使用resources的时候,maven默认会把src/main/resources下的所有配置文件以及src/main/java下的所有java文件打包或发布到targetclasses下面,但是,项目中我们有时需要在src/main/java下存放其他的xml文件,例如mapper映射文件,要想把这些xml文件也编译到target/classes目录下,就需要使用resources资源插件,通知maven;

        2.我们的程序有需要把一些文件放在:src/main/java目录中,当我们在执行Java程序时,需要用到src/main/java目录中的文件,就要告诉麻烦在mvn.compile  src/main/java目录下的程序时,需要把文件一同拷贝到target/classes目录中,此时就需要在<build>中加入<resources>

    23.个人遇到的问题:artifact 定义时不能有空格!

                     主要类的介绍
    1.InputStream in = Resources.getResourceAsStream(config);
    Resources是mybatis中一个类,负责读取主配置文件mybatis.xml

    2.SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
            SqlSessionFactory factory = builder.build(in);
    SqlSessionFactoryBuilder:负责创建SqlSessionFactory对象,

    3.SqlSessionFactory factory = builder.build(in);
    SqlSession sqlSession = factory.openSession();
    SqlSessionFactory是重量级对象,程序创建这个对象耗时长,耗资源,在整个项目中,有一个就够用了
    SqlSessionFactory是一个接口,接口实现类:DefaultSqlSessionFactory
    SqlSessionFactory的作用是获取SqlSession对象
        
        openSession()作用:
            1.openSession():无参数,获取非自动提交事务的sqlsession
            2.openSession(boolean):如果是TRUE,是自动提交事务;

    4.SqlSession接口:定义了操作数据的方法,例如:selectOne(),selectList(),insert(),updata(),commit(),rollback()...
    使用要求:SqlSession对象不是线程安全的,需要在方法内部使用,在执行sql语句之间,使用openSession()获取SqlSession,在执行完sql语句后,关闭它,这行SqlSession.close,这样才确保线程安全;


  • 相关阅读:
    吃金沙鼎火锅
    吴中路开了一家Boutique hotel(skyfortune)
    吃韩包子
    丽江
    吃成都淘海阁鲍鱼海鲜汤煲
    2007年最好笑的话剧“乱套了”
    不老药白丽格(玉芙蓉)Briglow (www.briglow.com)
    丽江趣事
    看看这个是什么菜
    这是什么动物?
  • 原文地址:https://www.cnblogs.com/1877chl/p/13341347.html
Copyright © 2020-2023  润新知