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 中的最新更改。
我尝试了以下方法,但对我有用
- 正在删除 .m2 文件夹并执行 maven 全新安装
- 在根文件夹上构建 mvn clean install
- 使用 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)。
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 中的最新更改。
我尝试了以下方法,但对我有用
- 正在删除 .m2 文件夹并执行 maven 全新安装
- 在根文件夹上构建 mvn clean install
- 使用 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)。