前言
众多的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
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
可正常编译。
java 命令再运行target/classes下代码
maven 在 idea 的配置
在maven设置项里配置和本地maven相同的目录和配置文件。
maven 创建普通Java 项目
点击新建project,选择maven-archetype-quickstart
项目创建普通项目
在运行配置里,输入命令compile
代表编译该程序
输入命令package
打包为jar包
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包。
移动至tomcat/webapps/下,可正常访问。
也可以在pom.xml中的build标签配置plugins标签
org.mortbay.jetty
maven-jetty-plugin
6.1.25
10
/test
9090
设置jetty启动。
访问9090端口
总结
学习了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