/src/main/java/ java源码
/src/main/resource java各种配置文件,资源文件
/src/main/webapp web各种源文件,格式文件如css,js,html,jsp等
/src/test/java java测试代码
/target 文件编译过程中生成的.class文件,jar,war等
基本命令
mvn -v 查看maven版本klj
compile 编译
test 测试
package 打包
clean 删除target
install 安装jar包到本地仓库中
创建目录的两种方式:
1. mvn archetype:generate按照提示选择
2. mvn archetype:generate -DgroupId=组织名 -DartifactId=项目名-模块名 -Dversion=版本号 -Dpackage=代码所存在的包名
通过坐标生成依赖
仓库
本地仓库和远程仓库
镜像仓库
更改仓库位置 修改conf/settings.xml中localRepository
完整的项目构建过程包括:
清理、编译、测试、打包、集成测试、验证、部署
maven生命周期:clean 清理项目 default 构建项目 site 生成项目站点
三个生命周期相互独立
default 构建项目(核心) compile test package install
site生成项目站点
pre-site 在生成项目站点前要完成的工作
site 生成项目的站点文档
post-site 在生成项目站点后要完成的工作
site-deploy 发布生成的站点到服务器上
传递依赖:简单讲就是间接依赖关系,比如:B依赖A,C依赖B,那么C也就依赖A了,C和A的依赖关系就是传递依赖。
Maven对于依赖的管理是这样的,当在POM.XML文件中发现配置了,某个依赖,就先去自己本地的依赖仓库中去找对应的依赖,如果没找到,就去Maven的中央依赖仓库中去找,如果还是没找到,就会生气报错。
对于项目而言,比如上面的例子A/B/C我们需要在B的POM.XML依赖关系中配置上A的坐标,
解决依赖冲突 最短路径优先和先声明先优先
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/xsd/maven-4.0.0.xsd">
<!-- 指定当前pom的版本 -->
<modelVersion>4.0.0</modelVersion>
<groupId>com.tzxy.mavenTest</groupId>
<artifactId>mavenTest</artifactId><!-- 项目名+模块名 -->
<version>0.0.1-SNAPSHOT</version>
<!-- 第一个0表示大版本号、第二个0表示分支版本号、
第三个0表示小版本号 例如0.0.1 snapshot(快照) alpha(内部测试) beta(公测)
release(稳定版)GA(正式发布) -->
<packaging>jar</packaging><!-- 项目打包方式 默认是jar 其他war zip pom-->
<name>mavenTest</name><!--项目描述名 -->
<url>http://maven.apache.org</url>
<description>项目描述</description>
<developers></developers>
<licenses></licenses>
<organization></organization>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency><!-- 通过坐标指定依赖位置 -->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<!-- <type></type> -->
<scope>test</scope><!--测试域,其他域例如compile,provided等等,详解见官网文档 -->
<!-- 设置依赖是否可选 -->
<optional></optional>
<!-- 排除依赖传递列表 -->
<exclusions>
<exclusion></exclusion>
</exclusions>
</dependency>
</dependencies>
<!-- 依赖的管理 -->
<dependencyManagement>
<dependencies>
<!-- <dependency></dependency> --><!-- 不会被运行,定义在父模块,子模块继承它 -->
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<phase>package</phase>打包时生成source jar包
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<!-- 记录着父模块的配置信息 -->
<!-- <parent></parent> -->
<!-- 聚合多个模块 -->
<modules>
<!-- <module></module> -->
</modules>
</project>
我们用maven搭建项目时,其内嵌的tomcat的编码不一定是utf-8,如果运行项目时有乱码可以在tomcat插件中手动添加配置,如下所示:
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<uriEncoding>UTF-8</uriEncoding>
<server>tomcat</server>
</configuration>