1. 打包编译文件
有时我们会在src/main/java
目录下的相关包下添加xml
文件,一般是MyBatis
的xml
映射文件。
使用 IDEA 中 Maven 的compile
编译的时候,编译的target目录下并没有这些xml
文件,测试接口访问的时候会出现org.apache.ibatis.binding.BindingException
。同理,在package
打包的时候,在jar
包中也找不到这部分xml
文件。
所以在 IDEA 中需要在 Maven 项目的pom.xml
中进行配置resources
:
<build>
<plugins>
<!--SpringBoot项目的打包编译插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<resources>
<!-- 将src/main/java下的xml资源编译到classes下 -->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<!-- 将src/main/resources下的资源编译到classes下 -->
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>
</build>
2. 打包跳过测试
使用 Maven 打包的时候,可能会因为单元测试失败而导致打包失败,这时候就需要跳过单元测试。Maven 跳过单元测试有三种方法。
2.1. 命令行方式
我们可以用两种命令来跳过测试
mvn clean install -DskipTests
mvn clean install -Dmaven.test.skip=true
skipTests
不执行测试用例,但会编译测试用例类生成的 class 文件到target/test-classes
下。即跳过单元测试,但是会继续编译测试类。
maven.test.skip=true
不执行测试用例,也不编译测试用例类。即不但跳过单元测试的运行,也跳过测试代码的编译。
2.2. pom 配置
可以在pom.xml
中添加如下配置来跳过测试:
<build>
<plugins>
<!-- maven 打包时跳过测试 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
<build>
如果是用的 SpringBoot 项目的spring-boot-maven-plugin
。
<build>
<plugins>
<!--SpringBoot项目的打包编译插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
则只需要在properties
标签中添加skipTests
即可。
<properties>
<skipTests>true</skipTests>
</properties>
2.3. IDEA 配置
2.3.1. 手动设置(常用,方便)
Maven 命令栏的工具栏有个下图中的图标,这个图标就是Skip Tests
。点击选中,会发现test
按钮变灰色了,再使用Lifecycle
中的package
打包就会跳过测试。
2.3.2. 全局配置
直接在设置中配置 Maven 的VM Options
,添加上面提到的命令行的两个命令中的一个就行:
3. 常用命令
#先clean,再打包发布到idc私服,-pl指定需要打包的模块,-P指定需要发布的目标私服ID
mvn clean deploy -pl data-search -Pidc
#先clean,再打包安装到本地maven仓库,-pl指定需要打包的模块。
mvn clean install -pl data-common
#先clean,再打包,并跳过测试,-pl指定需要打包的模块,
mvn clean package -pl data-govern -Dmaven.test.skip=true