安装
https://maven.apache.org/
- 下载,解压
- settings.xml 配置本地仓库位置 localRepository
插件:https://maven.apache.org/plugins/index.html
maven
- 管理依赖:jar管理,下载,版本
- 构建项目:编译,测试,打包,部署
- pom.xml:核心文件,maven项目必须有
约定目录结构
HelloWorld
├─src
│ ├─main
│ │ ├─java // 程序包,java文件
│ │ └─resources // 要使用的配置文件
│ └─test // 测试的文件,可以没有
│ ├─java
│ └─resources
└─target // mvn compile 生成
├─classes
│ └─com
│ └─dalao
│ └─me
├─maven-archiver // mvn package
├─maven-status // mvn compile
│ └─maven-compiler-plugin
│ ├─compile
│ │ └─default-compile
│ └─testCompile
│ └─default-testCompile
└─test-classes // mvn test
└─HelloWorld-1.0.0.jar // mvn package
├─pom.xml // 核心文件
- 中央仓库:https://mvnrepository.com/
pom.xml 目录执行以下命令
- mvn clean:删除 target 文件夹
- mvn compile:编译生成 target 文件夹,会自动从 中央仓库 下载依赖,maven-status 文件夹
- mvn test-compile:编译测试
- mvn test:保存测试结果,test-classes 文件夹
- mvn package:打包主程序,在 target 中输出 jar 包
- mvn install:安装主程序,根据坐标 com.dalao.me 保存到本地仓库
- mvn deploy:部署主程序
- maven 生命周期:清理、编译、测试、报告、打包、安装、部署,每个命令都会从头开始执行生命周期
pom.xml
<modelVersion>4.0.0</modelVersion>
// artifactId 和 version 决定 jar包 名称
<groupId>com.dalao.me</groupId> // 组织名
<artifactId>HelloWorld</artifactId> // 模块名
<version>1.0.0</version> // 版本号
// 打包后压缩文件的扩展名,默认 jar,web应用是 war
<packaging></packaging>
// 依赖,相当于 import
<dependencies>
<dependency>
<groupId>mysql</groupId> // 坐标位置,在仓库中
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
<scope>provided</scope>
// 依赖的范围,默认是 compile,在生命周期所有阶段都需要用到,打包会把依赖包也打包进去,多个 lib 文件夹。
test 只参与测试阶段,provided 参与编译、测试
<version>${spring.version}</version> // 自定义统一版本写法
</dependency>
</dependencies>
// 设置配置属性
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
// 自定义变量
<spring.version>5.2.2</spring.version>
</properties>
// 构建配置项目的参数设置,设置 JDK 版本
<build>
<!-- 配置插件 网上搜有什么好用的 -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId> // 插件名称
<version>3.8.1</version>
<configuration>
<source>1.8</source> // 编译要在 JDK 1.8 上
<encoding>UTF-8</encoding>
<target>1.8</target> // 程序应该运行在 JDK 1.8 上
</configuration>
</plugin>
</plugins>
<!-- 指定资源位置一起打包进 target/classes 文件夹下 -->
<!-- 默认情况打包 resources 文件夹的,java 文件夹的不处理 -->
<resources>
<resource>
<directory>${basedir}/src/main/resource</directory>
<filtering>false</filtering>
<!-- 包括以下文件夹的的文件名 -->
<includes>
<include>libextend_config/exception/*.*</include>
<include>libextend_config/rule/**/*.*</include>
<include>libextend_config/xml/**/*.*</include>
</includes>
</resource>
</resources>
</build>
// 多个模块需要声明相同的配置时,可以使用 parent 继承 父工程的 pom 配置
<parent>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</parent>
// 聚合 其他模块,一起构建
<modules>
<module></module>
<module></module>
</modules>
IDEA 配置
settings:配置当前项目
new projects settings:配置之后新建的项目
archetypeCatalog=internal、
-DarchetypeCatalog=internal
maven插件 build sync 失败,换个 maven 版本