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
生命周期, 到clean
phase, 再运行default
生命周期到compile
phase
常用的:
clean
: 清理compile
: 编译test
: 运行测试package
: 打包mvn [phase]
: 自动执行到某个lifecycle的某个phase
phase
处罚一个或者多个goal
goal
: mvn tomcat:run
: 直接运行了tomcat
生命周期下面的一个goal
phase
-> goal
&goal
compile
-> compiler:compile
test
-> compiler:testCompiler
&surefile:test
执行goal都是插件:goal名称
mvn compile
: 会自动执行compile
这个phase
, 这个phase
会自动执行compiler
插件关联的compiler:compile
这个goal
phase
都会通过插件(plugin)进行执行.compiler
这个插件, 然后执行默认的compiler:compile
这个goal
来执行phase
进行调用phase
进行声明, 执行声明的goal
parent
文件夹, 并建立可集成的配置文件pom.xml
, 并声明所有的module
, 进行统一的打包管理maven
原文:https://www.cnblogs.com/zhangrunhao/p/13060097.html