【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>
原文地址:https://www.cnblogs.com/frankruby/p/14292725.html