Maven 学习

前言

众多的java项目均由maven构建,迄今为止未系统学习过maven,这里来梳理一下。

maven 概念

maven是一款服务于java的自动化构建工具。

构建项目

  • 清理
    清除之前项目编译的字节码文件
  • 编译
    把程序源代码编译成class字节码文件
    批量:maven 可同时编译多个字节码文件
  • 测试
    maven 可执行测试程序代码
    批量:maven 可同时执行多个测试代码,测试多个功能
  • 报告
    生成测试结果的文件
  • 打包
    将项目中所有的 class 文件,配置文件等所有资源放在一个压缩文件中
    java 普通程序打包为 jar 包
    web 应用工程打包为 war 包
  • 安装
    把打包生成的文件(jar、war)安装到本机仓库指定的位置,提供依赖
  • 部署
    将动态web工程生成的war包复制到servlet容器的指定目录下,使其运行

maven 下载

在maven官网 https://maven.apache.org/ 下载apache-maven-3.8.4版本并解压。
并在mac上配置环境变量

export M2_HOME=/Users/cseroad/apache-maven-3.8.4
export PATH=$PATH:$M2_HOME/bin

生效并重启后验证。

source ~/.bash_profile
image.png

maven 配置

1、修改本地仓库地址。
修改conf/setting.xml文件

/Users/cseroad/maven/repository

2、修改仓库镜像
同样修改conf/setting.xml文件

    
      alimaven
      central
      aliyun maven
      http://maven.aliyun.com/nexus/content/repositories/central/
    

pom.xml 文件

pom全称是Project Object Model,即项目对象模型。pom.xml是maven的项目描述文件。

  
    4.0.0
    
    org.example
 
    
    maven01
 
    
    1.0

properties用来定义一些配置属性。

    
                
        1.8
        
        1.8
        
        UTF-8
        
        UTF-8
    

dependencies 依赖第三方的类库。在https://mvnrepository.com/ 查找需要的依赖。

    
      javax.servlet
      servlet-api
      2.5
      provided
    

依赖范围有几种:

compile test provided runtime
对主程序有效 对主程序无效 对主程序有效 对主程序有效
对测试程序有效 对测试程序有效 对测试程序有效 对测试程序有效
参与打包 不参与打包 不参与打包 参与打包
参与部署 不参与部署 不参与部署 不参与部署
如:commons-logging 如:junit 如:servlet-api 如:log4j

maven 命令

maven的命令对应着maven的生命周期。命令的执行必须在pom.xml所在目录。

mvn clean 清理
mvn compile 编译 main/java 下的 java 程序
mvn test-compile 编译 test/java 下的 java 程序
mvn test 测试
mvn package 打包生成jar包或者war包
mvn install 安装,把本工程打包后,保存到本地仓库中
mvn deploy 部署,会保存到私服仓库中,并自动将项目部署到web容器中

手动创建一个maven工程

maven_test
|-- pom.xml            # maven的核心文件(maven项目必须有)
|-- src
    |-- main           # 放主程序java代码和配置文件
    |   -- resources   # 放java程序中要使用到的配置文件    
    |   -- java       # 放程序包和包中的java文件
    |      -- com
    |          -- example
    |             -- TestHello.java
    |
    |-- test           # 放测试程序代码和配置文件 (可以没有)
    |   -- resources   # 测试程序中要使用到的配置文件    
    |   -- java       # 放测试程序包和包中的java文件
    |      -- com
    |          -- example
    |             -- TestHello.java

TestHello.java 为代码

package com.example;


public class TestHello{
    
    public static void main(String[] args){
        TestHello hello = new TestHello();
        System.out.println("hello test");
    }
}

在pom.xml目录下输入mvn compile可正常编译。

image.png

java 命令再运行target/classes下代码

image.png

maven 在 idea 的配置

在maven设置项里配置和本地maven相同的目录和配置文件。

image.png

maven 创建普通Java 项目

点击新建project,选择maven-archetype-quickstart项目创建普通项目

image.png
image.png

在运行配置里,输入命令compile代表编译该程序

image.png
image.png

输入命令package打包为jar包

image.png

maven 创建Java Web 项目

新建project时,选择maven-archetype-webapp项目创建Java Web 项目。
其余和普通项目一样。
导入依赖包

    
      javax.servlet
      servlet-api
      2.5
      provided
    

servlet继承HttpServlet

public class TestServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("GET请求");
    }
}

输入命令package打包为war包。

image.png

移动至tomcat/webapps/下,可正常访问。

也可以在pom.xml中的build标签配置plugins标签

            
                org.mortbay.jetty
                maven-jetty-plugin
                6.1.25
                
                    
                    10
                    
                    /test
                    
                        
                            
                            9090
                        
                    
                
            

设置jetty启动。

image.png
image.png

访问9090端口

image.png

总结

学习了maven如何创建、导入、导出项目。

参考资料

http://qibinaoe.top/2021/01/19/Maven%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/
https://www.bilibili.com/video/BV1Fz4y167p5?p=1
https://www.bilibili.com/video/BV134411T7nB?p=2&spm_id_from=pageDriver

你可能感兴趣的:(Maven 学习)