zoukankan      html  css  js  c++  java
  • 【Maven 基础知识01】

    一、什么是Maven

    是一款服务于Java平台的自动化构建工具

    二、构建

    1、已“java源文件” “配置文件” “JSP” “HTML”作为原材料,去生产一个可以运行的项目的过程就叫构建

    (分为三步:编译-->部署-->搭建)

    编译:Java源文件(.java文件)-->编译--> class文件 -->JVM执行

    部署:一个BS项目最终运行的并不是动态web工程本身,而是这个Web工程“编译后的结果”

    2、构建过程中的各个环节
    清理:将以前编译得到的旧的class字节码文件删除,为下一次编译做准备
    编译;将Java源程序编译成class字节码文件
    测试:自动测试,自动调用junit程序
    报告:测试程序执行的结果
    打包:动态web工程打war包,Java工程打jar包
    安装:Maven特定的概念—将打包得到的文件复制到“仓库”中指定位置
    部署:将动态web工程生成的war包复制到Servlet容器的指定目录下,使其可以运行

     三、安装maven核心程序

    1、检查JAVA_HOME的环境变量

    echo $JAVA_HOME$
    /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home$

    2、解压maven的核心程序压缩包(注意:放到一个非中文的无空格的路径下)

    3、配置Maven相关的环境变量

    |-- 配置MAVEN_HOME或M2_HOME

    |-- 配置path

    (已Mac系统举例,window系统和配置Java的环境变量一样)

    1)打开终端输入命令 vim ~/.bash_profile (编辑环境变量配置文件)
    2)在环境变量文件中加上如下的配置⬅️export MAVEN_HOME=后面的路径是用自己路径啊!!这是重点
    
    export M2_HOME=/Users/wufq/lidong/apache-maven-3.6.1
    export PATH=$PATH:$M2_HOME/bin
    
    PS:(可以将文件直接拖拽至终端内文件路径便可显示出来)
    3)输入 :wq退出并保存当前文件
    4)输入 source .bash_profile,按下Enter键使bash_profile生效。
    5)输入 mvn -v,结果显示maven版本即表明配置成功

    4、Maven的核心内容

    |— 约定的目录结构

     

    为什么要约定这样的目录结构?

    已编译为例:maven想要自动进行编译,那么他必须知道Java源文件放在那。也就是说只有按照人家这个目录结构才能找到

    |— POM文件

    以junit单元测试举例来说明pom文件以及main主程序目录和test目录的作用

    1)pom.xml文件内容

    <?xml version="1.0" encoding="UTF-8"?>
    <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.cswu.services</groupId>
        <artifactId>Chiken</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13.1</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
    </project>

    2)main主目录文件代码

    /**
     * @Author wufq
     * @Date 2021/1/18 14:23
     */
    public class ChikenService {
    
        public String  Hello(String name){
    
            return "Hello:"+name;
        }
    }

    3)test目录文件代码运用junit来测试main主目录的代码

    import org.junit.Test;
    import static junit.framework.TestCase.assertEquals;
    
    /**
     * @Author wufq
     * @Date 2021/1/18 16:02
     */
    public class TestChiken {
        @Test
        public void testChiken(){
            ChikenService cs = new ChikenService();
            String result=cs.Hello("小明");
            assertEquals("Hello:小明",result); //assert:断言
        }
    }

    通过以上代码的操作可以看出,test目录的测试代码所依赖的Junit包来源于pox文件的引用,同时也表明test测试程序可以对main主程序进行单元测试

    文件目录如下图:

    |— 坐标

    就是用下面三个向量在仓库中唯一定位一个maven工程

    1)groupId :公司或组织域名倒序+项目名

    <groupId>com.cswu.service</groupId>

    2)artifactId:模块名

    <artifactId>helloFrides</artifactId>

    3)version:版本名

    <version>1.0-SNAPSHOT</version>

    |— 依赖(最核心)

    B工程要用到A工程的内容,B工程就需要依赖A工程的坐标,具体是在B工程的pom文件内引入A的坐标

     1)Maven解析依赖信息时会到本地仓库中查找被依赖的jar包

      对于我们自己开发的maven工程,使用mvn install命令安装后就可以进入仓库

    2)scope依赖的取值范围,分为三个

        compile范围依赖:

        对主程序是否有效:有效

        对测试程序是否有效:有效

        是否参与打包:参与

      test范围依赖:

        对主程序是否有效:无效

        对测试程序是否有效:有效

        是否参与打包:不参与

        典型例子:junit

      privided范围依赖

        对主程序是否有效:有效

        对测试程序是否有效:有效

        是否参与打包:不参与

        是否参与部署:不参与

        典型例子:servlet-api.jar

     

     
    |— 仓库

    仓库的分类:

    1)本地库:当前电脑部署的仓库,为本地的maven工程提供服务

    2)远程库:

      私服:架设在当前局域网下,为局域网内的maven工程提供服务

      中央仓库:架设在Internet上,为全世界的maven工程提供服务

      中央仓库镜像:为中央仓库分担流量
    |— 生命周期/插件/目标

      各个构建环节执行的顺序
    |— 继承
    |— 聚合

    5、常用Maven命令

    1)执行与构建过程相关的Maven命令,必须进入pom.xml所在的目录(与构建过程相关:编译、测试、打包...)

    2)常用命令

    mvn clean 清理target目录下的之前打好的jar包或者是war包

    mvn compile:编译主程序

    mvn test-compile:编译测试程序

    mvn test:执行程序

    mvn package:打包

    mvn install:安装

    mvn site:生成站点

    mvn clean install -DskipTests  :跳过测试类编译打包,只会打main程序的包,不会打test程序的包

    执行mvn install,会执行前面一系列的动作包括 compile , package , test 等

    平时可以用mvn install,而不进行chean节省时间(如果你觉得节省时间多的话),但最保险还是用 mvn clean install 生成最新的jar包或其他包
    不想用mvn clean又想保证jar包最新,建议添加 -Djar.forceCreation 参数 -->mvn package -Djar.forceCreation  (这个参数应该是强制创建jar包,所以结果target中的jar包内容被覆盖了,产生了新的jar包。)

    ==================================

    指定package的时候打成一个war包,改成jar,就会被打成jar包。

    <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">
    
      ...
      <packaging>war</packaging>
      ...
    </project>
  • 相关阅读:
    java实现快速排序
    java实现二叉树
    hudson——持续集成
    Oracle存储过程的数组参数
    在linux系统下建立artifactory管理maven库
    关于排错:专注思考,细心观察,步步为营
    在关键字'('附近有语法错误 Incorrect syntax near '(' in sql server table values function
    快速将PSD文件生成WordPress主题模板Divine
    SQLserver 复制分发( 发布与订阅) 疑难杂症 Replication (Publications,Subscriptions)
    Windows8将撼动笔记本电脑市场?
  • 原文地址:https://www.cnblogs.com/frankruby/p/14292725.html
Copyright © 2011-2022 走看看