a-maven-project // 项目名称
├── pom.xml // 项目描述文件
├── src
│ ├── main
│ │ ├── java // 存放java源码目录
│ │ └── resources // 存放资源文件目录
│ └── test
│ ├── java // 存放测试源码
│ └── resources // 存放测试资源
└── target // 所有打包, 编译生成的文件都放到这
<project ...>
<modelVersion>4.0.0</modelVersion>
<groupId>com.itranswarp.learnjava</groupId> // 组织, 公司名称
<artifactId>hello</artifactId> // 项目名称
<version>1.0</version> // 版本号
<packaging>jar</packaging>
<properties>
...
</properties>
<dependencies>
<dependency> // 声明一个依赖, maven会自动下载
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
</project>
groupId, artifactId, version用来确定一个项目compile: 编译时, 需要用到的jar包(默认), 例如: commons-logging
classpath中test: 编译Test时, 需要用到的jar包, 例如: junit
runtime: 编译时不需要, 但运行时需要用到 例如: mysql
provided: 编译时需要用到, 但运行时由JDK或某个服务器提供 例如: servlet-api
maven维护了一个中央仓库, 所有的依赖包都在上面
本地设置缓存, 一旦下载过, 就永久安全的存放在本地, 不会重复下载
-SNAPSHOT开发版本, 每次都会重复下载
使用国内提供的镜像仓库进行下载
search.maven.org进行搜索
mvn clean package进行打包构建
内置生命周期default:
生命周期clean:
mvn package: 执行default生命周期, 执行到package
mvn clean compile: 先执行clean生命周期, 到cleanphase, 再运行default生命周期到compilephase
常用的:
clean: 清理compile: 编译test: 运行测试package: 打包mvn [phase]: 自动执行到某个lifecycle的某个phase
phase处罚一个或者多个goalgoal: mvn tomcat:run: 直接运行了tomcat生命周期下面的一个goalphase -> goal&goal
compile -> compiler:compiletest -> compiler:testCompiler&surefile:test执行goal都是插件:goal名称mvn compile: 会自动执行compile这个phase, 这个phase会自动执行compiler插件关联的compiler:compile这个goalphase都会通过插件(plugin)进行执行.compiler这个插件, 然后执行默认的compiler:compile这个goal来执行phase进行调用phase进行声明, 执行声明的goalparent文件夹, 并建立可集成的配置文件pom.xml, 并声明所有的module, 进行统一的打包管理maven原文:https://www.cnblogs.com/zhangrunhao/p/13060097.html