Maven MultiModule 本地安装不更新

Maven MultiModule local install does not update

Project A
   --Module B    
      --pom.xml
   --Module C    
      --pom.xml    
pom.xml

我正在处理一个多模块项目,其中项目 A、模块 B 和模块 C 都有自己的 pom 文件。模块 A 和模块 B 引用 ProjectA pom 文件。

我在模块 B 的 pom 文件中使用模块 A 作为依赖项。

我在模块 A 中添加了几个包并执行了 mvn clean install

它用我所做的最新更改更新了我的 .m2 存储库。

然后我在 moduleB 上做了 mvn clean install,但是 moduleB 仍然无法识别模块 A 中的最新更改。

我尝试了以下方法,但对我有用

  1. 正在删除 .m2 文件夹并执行 maven 全新安装
  2. 在根文件夹上构建 mvn clean install
  3. 使用 Intellij,使缓存无效并重新启动,启用更新快照等

Module A and Module B reference the ProjectA pom file

ProjectA 应该有包装 "pom" 并且是其他模块的 "aggregator"。它的 pom.xml 应该是这样的:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.foo.bar</groupId>
    <artifactId>myartifactname</artifactId>
    <version>0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <modules>
      <module>ModuleB</module>
      <module>ModuleC</module>
    </modules>
</project>

ProjectA 不应该包含任何源文件,所以在模块 B 和 C 中声明对它的依赖是没有意义的。

然而,模块 A pom.xml 可以包含所有模块通用的定义(如插件配置、属性等)。在这种情况下,您可以在模块 B 和 C 中使用继承。 例如,模块 B 和 C(但不是 A)可以有一个 "parent" 部分,它们将在其中将 ProjectA 声明为 "parent",从而继承上述定义。

I am using ModuleA as a dependency in moduleB's pom file

同样,正如我在上面解释的那样,这没有意义。 ProjectA 不是 java 模块,并且由于它具有打包的 pom,因此没有从该模块构建的真正工件(读取 jar)。