-
コンパイル時に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集約プロジェクトの場合、親プロジェクトは子プロジェクトに依存し、子プロジェクトは親プロジェクトに依存するために親プロジェクトのパブリックコードを使用する必要があるため、親プロジェクトにパブリックコードを記述することはお勧めしません。これは循環依存関係を形成し、パッケージ化されます。パッケージ化すると、エラーが報告され、パッケージ化は失敗します(コードのコンパイルには影響しません。ただし、パッケージ化する場合、親プロジェクトはサブプロジェクトの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打包子工程。