-
Когда вам нужно использовать пакет jar в каталоге lib при компиляции, вам нужно добавить < plugin> в pom
<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>
-
Если вы все еще хотите продолжить сборку проекта, когда вы столкнулись с ошибкой теста, вам необходимо установить для свойства testFailureIgnore плагина surefire значение true.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
</plugins>
</build>
Для проектов агрегирования Maven не рекомендуется писать общедоступный код в родительском проекте, поскольку родительский проект зависит от дочернего проекта, а дочерний проект должен использовать общедоступный код в родительском проекте, чтобы полагаться на родительский проект. Это формирует циклическую зависимость и упаковывается При упаковке будет сообщено об ошибке, и упаковка завершится неудачно (не влияет на компиляцию кода; но при упаковке родительский проект должен ссылаться на пакет jar подпроекта, а упакованный подпроект должен ссылаться на пакет jar родительского проекта, но оба проекта еще не упакованы , Значит упаковка не удалась).
Решение:
-
Не пишите общий код в родительском проекте
如果必须要抽公共代码,建议新建一个工程作为专门用来写公共代码,在所有工程的上一级目录创建一个pom.xml用来管理所有的子工程,如此便不会因为循环依赖导致打包失败
-
Сначала упакуйте родительский проект, затем упакуйте подпроекты
如果已经在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打包子工程。