目录
前言:Apache Maven是一个(特别是Java编程)项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。本文是学习MAVEN的启蒙
1 下载
打开 官方网址下载页面 MAVEN下载链接网址
2 安装-windows为例
新增文件夹develop,解压下载的文件到当前目录
3 配置环境变量
3.1 JAVA_HOME
略
3.2 MAVEN_HOME
3.3 PATH
3.4 验证
# cmd 执行 mvn
出现下图
4 MAVEN基础概念
4.1 仓库概念
4.2 坐标概念
4.2.1 打开网址
https://mvnrepository.com
4.2.2 输入搜索内容junit
4.2.3 找到对应API名称点击
4.2.4 点击对应版本
4.2.5 复制MAVEN坐标
<!-- https://mvnrepository.com/artifact/junit/junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency>
4.3 配置本地仓库
4.3.1 初始默认仓库
在当前登录PC的用户名目录下有个.m2文件(前提得在cmd输入mvn才会生成)
4.3.2 修改仓库位置
1、在文件夹develop目录下新建一个文件夹repository
2、打开目录D:\develop\apache-maven-3.9.3\conf下的settings.xml
找到下图位置进行修改
3、修改到设置的仓库新位置
4.4 远程默认仓库(了解)
4.5 通过修改镜像仓库配置方式提速(必须)
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
4.6 全局setting与用户setting(了解)
5 MAVEN项目
5.1 手工创建工程
5.1.1 MAVEN工程目录结构
1、基本目录结构纯手工创建文件夹
2、在project\project-java\src\main\java\ 下创建 com\runa
3、在project\project-java\src\main\java\com\runa新建一个Demo.java文件
package com.runa; public class Demo{ public String say(String name){ System.out.println("hello " + name); return "hello " + name; } }
4、在project\project-java\src\test\java\ 下创建 com\runa
5、在project\project-java\src\test\java\com\runa新建一个DemoTest.java文件
package com.runa; import org.junit.Test; import org.junit.Assert; public class DemoTest{ @Test public void testSay(){ Demo d = new Demo(); String ret = d.say("maven"); Assert.assertEquals("hello maven",ret); } }
6、在project\project-java\下创建pom.xml(不要手写)
在D:\develop\apache-maven-3.9.3\lib 使用解压文件随便打开一个jar包,向上,点击查找
复制
粘贴到新建的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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.runa</groupId> <artifactId>project-java</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies> </project>
5.1.2 构建命令
在project\project-java\目录下(pom.xml所在目录)打开cmd
1、编译
mvn compile
2、到maven仓库查看新增了很多文件
3、当前目录下多了target文件夹
执行下面命令可清理target文件夹(这里可暂时不执行)
mvn clean
4、测试
mvn test
执行成功会新增文件
5、打包
mvn package
在test-classes里面有jar包
6、 安装
mvn install
将打包的jar存储到本地仓库
5.2 插件创建工程
cmd进到此目录
5.2.1 java工程
mvn archetype:generate -DgroupId=com.runa -DartifactId=hellojava -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=0.0.1-snapshot -DinteractiveMode=false
5.2.2 web工程
mvn archetype:generate -DgroupId=com.runa -DartifactId=web-project -DarchetypeArtifactId=maven-archetype-webapp -Dversion=0.0.1-snapshot -DinteractiveMode=false
5.3 IDEA创建工程
5.3.1 配置MAVEN
1、创建一个空的项目
2、 修改sdk版本
idea-file-project struct进入文件结构---project ---project sdk:[选择你需要切换的版本]【如果没有需要的版本,需要在下面】【Platform Settings】-SDKs 中添加相应的版本
3、修改maven版本
Settings->Build ->Build tools - > maven
4、修改setting.xml配置
5.3.2 手工创建java项目
创建模块
pom.xml添加依赖
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies>
为test添加package com.runa
上图test下的resources是通过手工添加文件夹的类型变更也可通过这个方式改:
或者到这里加 file-project struct进入文件结构---modules
package com.runa; public class Demo { public String say(String name){ System.out.println("hello " + name); return "hello " + name; } }
package com.runa; import junit.framework.Assert; public class DemoTest { public void testSay(){ Demo d = new Demo(); String ret = d.say("maven"); Assert.assertEquals("hello maven", ret); } }
5.3.2.1 编译运行(方式一)
点击右侧的MAVEN--->Lifecycle 可执行编译测试等命令
5.3.2.2 编译运行(方式二推荐)
创建编译
可继续再创建clean,区别在Run 那里
5.3.3 原型创建java项目
上图2个箭头是手动创建哪个文件夹自动生成对应类型的(我的idea是2023-01版本)
5.3.4 原型创建web项目
5.3.5 插件
5.3.5.1 配置tomcat7
到坐标库搜索tomcat插件
目前maven3.8.8支持下图 3.9.3不行
pom.xml
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.runa</groupId> <artifactId>web01</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>web01 Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <!-- 构建 --> <build> <!-- 设置插件 --> <plugins> <!-- 具体插件 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> </plugin> </plugins> </build> </project>
查看插件,如果没有出现点击那个刷新
点击运行上图箭头
上面地址可直接访问
5.3.5.2 自定义tomcat7的端口
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.runa</groupId> <artifactId>web01</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>web01 Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <!-- 构建 --> <build> <!-- 设置插件 --> <plugins> <!-- 具体插件 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> <configuration> <port>80</port> <path>/</path> </configuration> </plugin> </plugins> </build> </project>
5.3.5.3 做到配置
6 pom注释说明
<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/maven-v4_0_0.xsd"> <!-- 指定pom的模型版本 --> <modelVersion>4.0.0</modelVersion> <!-- 打包方式, web工程打包未war java工程打包未jar --> <packaging>war</packaging> <!-- 组织id --> <groupId>com.runa</groupId> <!-- 项目id 一般项目名称 --> <artifactId>web01</artifactId> <!-- 版本号release(完成版) snapshot (开发版) --> <version>1.0-SNAPSHOT</version> <name>web01 Maven Webapp</name> <url>http://maven.apache.org</url> <!-- 设置工程所有依赖 --> <dependencies> <!-- 具体依赖 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <!-- 构建 --> <build> <!-- 设置插件 --> <plugins> <!-- 具体插件 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> <configuration> <port>80</port> <path>/</path> </configuration> </plugin> </plugins> </build> </project>
7 依赖管理
7.1 依赖配置
7.2 依赖传递
将项目web01配置到java02的pom.xml
7.3 可选依赖
7.4 排除依赖
选择你的项目依赖位置
7.5 依赖范围
8 生命周期与插件
8.1 生命周期
8.1.1 clean 生命周期
8.1.2 default生命周期
8.1.3 site构建生命周期
8.2 插件
上官网
build部分,注意打的是test,
<?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.runa</groupId> <artifactId>java01</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.12</version> </dependency> </dependencies> <!-- 构建 --> <build> <!-- 设置插件 --> <plugins> <!-- 具体插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.2.1</version> <executions> <execution> <goals> <goal>jar</goal> </goals> <phase>generate-test-resources</phase> </execution> </executions> </plugin> </plugins> </build> </project>