(一)文件结构:
src
-main
-java
-package
-test
-java
-package
resources
(二)helloworld案例
step1:在main的Java文件夹下建包,并创建类:
package com.imooc.maven01.model;
public class HelloWorld{
public String sayHello(){
return "Hello World!";
}
}
step2:在test文件夹下建立包,并创建HelloWorldTest
package com.imooc.maven01.model;
import org.junit.*
import org.junit.Assert.*;
public class HelloWorldTest{
@Test
public void testHello(){
Assert.assertEquals("Hello World!",new HelloWorld().sayHello());
}
}
step3:创建pom.xml,并将其放入到src所在的文件夹中:
groupId的值就是项目的包名
artifactId的值就是模块名
<groupId>com.imooc.maven01</groupId>
<artifactId>maven01-model</artifactId>
<version>0.0.1SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
step4:编译项目
mvn compile
(三)常用的构建命令介绍
mvn -v //查看maven的版本
mvn compile //编译
mvn test //测试
mvn package //打包
mvn clean //删除项目编译的字节码文件和测试报告
mvn install //安装jar包到本地仓库
(四)Speak案例
step1:创建一个speak类,调用上一个案例的helloworld
public class Speak(){
public String SayHi(){
new HelloWorld.sayHello();
}
}
step2:创建一个测试类
public class Speaktest{
@Test
public void testsayHi(){
Assert.assertEquals("Hello World!",new Speak().satHi());
}
}
step3:创建pom.xml
<groupId>com.imooc.maven02</groupId>
<artifactId>maven02-model02</artifactId>
<version>0.0.1SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
<!--把helloWorld案例创建的jar包引入进来-->
<dependency>
<groupId>com.imooc.maven01</groupId>
<artifactId>maven01-model</artifactId>
<version>0.0.1SNAPSHOT</version>
</dependency>
</dependencies>
(五)maven中的坐标和仓库
构件坐标:
1、groudId:公司名字+项目名
2、artifactId:项目名字+模块名
3、version:版本号
仓库:
1、本地仓库
2、远程仓库
镜像仓库
<!--设置镜像中央仓库为阿里云-->
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
(六)maven生命周期
完整的项目构建过程包括:
清理、编译、测试、打包、集成测试、验证、部署
maven三套独立的生命周期
clean 清理项目
- pre-clean 执行清理前的工作
- clean 清理上一次构建生成的所有文件
- post-clean 执行清理后的文件
default 构建项目(最核心)
- compile test package install
site 生成项目站点
- pre-site 在生成项目站点前要完成的工作
- site 生成项目的站点文档
- post-site 在生成项目站点后要完成的工作
- site-deploy 发布生成的站点到服务器上
(7)pom.xml常见元素介绍
<!--指定了当前pom的版本-->
<modelVersion>4.0.0</modelVersion>
<!--坐标信息-->
<!--主项目标识,用来标识当前maven属于哪个实际的项目,格式和包类似-->
<!--反写的公司网址+项目名-->
<groupId>com.imooc.maven02</groupId>
<!--模块标识别:实际的模块。项目名+模块名-->
<artifactId>maven02-model02</artifactId>
<!--
项目的版本好
第一个0表示大版本号
第二个0表示分支版本号
第三个0表示小版本号
snapshit 快照
alpha 内部测试
beta 公测
release 稳定
ga 正式发布
-->
<version>0.0.1SNAPSHOT</version>
<!--项目打包方式:默认是jar,可选war、zip、pom-->
<package></package>
<!--指定编码格式-->
<properties>
<project.build.sourceEnconding>UTF-8</project.build.sourceEnconding>
</properties>
<!-- 项目描述名:一般在产生项目文档时才会使用 -->
<name></name>
<!--项目地址-->
<url></url>
<!--项目描述-->
<description></description>
<!--开发人员列表-->
<developers></developers>
<!--许可证信息-->
<licenses></licenses>
<!--组织信息-->
<organization></organization>
<!--依赖列表-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<!--依赖范围-->
<scope></scope>
<!--排除传递列表-->
<exclusions>
<exclusion>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<!--依赖的管理,作用主要定义在父模块中,对子模块进行管理-->
<dependencyManagement>
<dependencies>
<dependency></dependency>
</dependencies>
</dependencyManagement>
<!--对构件的行为提供相应的支持-->
<build>
<!--插件列表-->
<plugins>
<plugin>
<groupId>org.apache.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>
jar-no-fork
</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<!--通常用于子模块对父模块pom的继承-->
<parent></parent>
<!--用来聚合运行Maven项目,指定多个模块一起编译-->
<modules>
<module></module>
</modules>
(八)maven依赖范围
<dependency>
<scope>test<scope>
</dependency>
依赖的范围,我们如果要使用某一个框架,就要把相关jar包引入classPath中,我们的项目就可以使用该框架
maven中提供了三种classPath
1、编译
2、测试
3、运行
test表示junit只存在测试的classpath中
所以依赖的范围就是为了控制与三种class path的关系的