1.maven的标准目录结构
Maven 提倡使用一个共同的标准目录结构,Maven 使用约定优于配置的原则,大家尽可能的遵守这样的目录结构。如下所示:
目录 | 目的 |
---|---|
${basedir} | 存放pom.xml和所有的子目录 |
${basedir}/src/main/java | 项目的java源代码 |
${basedir}/src/main/resources | 项目的资源,比如说property文件,springmvc.xml |
${basedir}/src/test/java | 项目的测试类,比如说Junit代码 |
${basedir}/src/test/resources | 测试用的资源 |
${basedir}/src/main/webapp/WEB-INF} | web应用文件目录,web项目的信息,比如存放web.xml、本地图片、jsp视图页面 |
${basedir}/target | 打包输出目录 |
${basedir}/target/classes | 编译输出目录 |
${basedir}/target/test-classes | 测试编译输出目录 |
Test.java | Maven只会自动运行符合该命名规则的测试类 |
~/.m2/repository | Maven默认的本地仓库目录位置 |
2.手动创建一个maven项目
2.1. 我们可以根据Maven的项目规范去手动创建一个maven项目,以便帮助我们进一步理解
- 手动在文件夹中创建maven项目的文件结构
- 创建java包结构和.java文件
package com.hao.test;
public class Hello {
public static void main(String[] args) {
String name = "qianghao";
System.out.print(name);
}
}
- 创建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">
<!-- 模型版本 -->
<modelVersion>4.0.0</modelVersion>
<!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,maven会将该项目打成的jar包放本地路径:/com/companyname/project-group -->
<groupId>com.companyname.project-group</groupId>
<!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
<artifactId>hello</artifactId>
<!-- 版本号 -->
<version>1.0</version>
</project>
POM : project object model 项目对象模型,pom.xml对于maven项目来说是最重要的配置文件,所有有关于构建过程的配置都需要在该文件中进行配置。
2.2. 所有 POM 文件都需要 project 元素和三个必需字段:groupId,artifactId,version;
-
project:所有元素的跟标签;
-
groupId:该标签为工程组的标识,一般使用公司名称或域名;
-
artifactId:工程组下各个项目工程的标识,同一工程组下不同模块的项目就是靠该标签进行区分的;
-
version:工程的版本号;
我们可以把这三个必须字段看做是三维空间中的X、Y、Z坐标,我们可以根据一个固定的xyz定位到三维空间中的唯一一个点,同样的我们根据以上三个标签就在maven仓库中定位到任意一个唯一的项目
2.3. maven工程的坐标与maven仓库中路径的对应关系
<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>
<!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,maven会将该项目打成的jar包放本地路径:/com/companyname/project-group -->
<groupId>com.companyname.project-group</groupId>
<!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
<artifactId>hello</artifactId>
<!-- 版本号 -->
<version>1.0</version>
</project>
我们可以根据Maven项目的坐标在本地仓库的根目录下找到我们的项目;
C:\Users\admin\.m2\repository\com\companyname\project-group\hello\1.0\hello-1.0.jar
3.常用的Maven命令
有关编译、测试、打包等构建相关的命令都需要在pom.xml所在的目录下执行;
-
mvn compile。
编译主程序项目源代码。这个命令会在maven项目下生成target文件夹和对应的classes文件夹,并生成对应的字节码文件
执行结果:
-
mvn clean
对项目进行清理,清理的过程中会删除刚才target目录下编译的内容。
执行结果:
-
mvn test-compile
编译测试程序项目源代码。
执行结果:
-
mvn test
对项目的运行测试。
执行结果:
-
mvn package
package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
执行结果:
-
mvn install
install命令会将我们自己创建的项目安装到本地maven仓库中