Maven笔记
标准项目结构:
/Hello
/src
/main
/java
/resources
/test
/java
/resources
/pom.xml
GAV坐标
<groupId>org.slu</groupId>
<artifactId>project</artifactId>
<version>1.0</version>
<!-- 项目打包类型, 可选jar, ear, war, rar, pom等 -->
<packaging>jar</packaging>
依赖
<dependencies>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
</dependencies>
修改本地仓库位置
在${MAVEN_HOME}/conf/settings.xml
文件中添加:
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>/home/piner/projects/mavenrepository</localRepository>
Maven的生命周期
验证、编译、测试、包装、检查、安装、部署
单元测试
- 加入依赖
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
-
在
src/test/java
中加入测试代码约定:
- 测试类以
Test
开头 - 测试类和原类包名相同
- 定义要测试的方法代码:
- public
- 无返回值
-
Test
开头 - 没有参数
- 方法可以单独运行
- 方法加注解
@Test
- 使用
Assert
类中的assertEquals()
方法测试是否正确(期望值,实际值)
- 测试类以
Maven命令
mvn clean
清除target
文件内内容
mvn compile
编译java
文件,生成class
文件
mvn test-compile
编译测试用java
文件,生成测试用class
文件
mvn test
运行测试程序,测试报告在target/surefire-reports
文件夹下
mvn package
打包,生成jar
或war
等包文件
mvn install
部署到本地Maven
仓库
自定义配置插件
在pom.xml
文件中的project
标签内添加:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source> <!-- 指定JDK编译版本 -->
<target>1.8</target> <!-- 指定JDK运行版本 -->
</configuration>
</plugin>
</plugins>
</build>
在IDEA中设置Maven
在FIle->settings中,找到Build,Execution,Deployment->Build Tools->Maven->Runner
设置VM Options为-DarchetypeCatalog=internal
(不下载文件,加快创建速度),并选择合适JRE
在Maven中选择自己的Maven
web项目依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jaax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
</dependency>
依赖管理
依赖范围scope:
- compile:参与构建项目的所有阶段
- test:只在测试阶段起作用
- provided:项目部署时由服务器提供相关依赖jar包
<!-- 定义与使用全局变量 -->
<properties>
<myversion>1.0.1</myversion>
</properties>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${m}</version>
<scope>test</scope>
</dependency>