-
编译时需使用lib目录下的jar包时,需要在pom中添加<plugin>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<!--指定外部lib-->
<extdirs>${basedir}\src\main\resources\lib</extdirs>
</compilerArguments>
</configuration>
</plugin>
</plugins>
</build>
-
如果遇到测试失败时,依然希望继续构建项目,那么需要设置surefire插件的testFailureIgnore属性为true
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
</plugins>
</build>
Maven聚合工程,不建议在parent工程中写公共代码,因为parent工程中要依赖子工程,而子工程要使用parent工程中的公共代码是又要依赖parent工程,如此形成了一个循环依赖,在打包时便会报错并打包失败(不影响代码编译;但是打包时,parent工程要引用子工程的jar包,而打包子工程又需要引用parent工程的jar包,但此时两个工程都还没有打包,所以打包失败)。
解决方法:
-
不要在parent工程中写公共代码
如果必须要抽公共代码,建议新建一个工程作为专门用来写公共代码,在所有工程的上一级目录创建一个pom.xml用来管理所有的子工程,如此便不会因为循环依赖导致打包失败
-
先打包parent工程,再打包子工程
如果已经在parent工程中写了公共代码,则需要现将parent工程中的<modules></modules>标签中的管理的子工程注释掉,并修改<packaging>pom</packaging>为<packaging>jar</packaging>(parent工程的pachaging都是pom),然后install将jar包安装到本地仓库;parent工程打包成功后,将之前注释调的<modules></modules>标签中的注释去掉,修改<packaging>jar</packaging>为<packaging>pom</packaging>,然后在parent工程package打包子工程。