我有一个多模块Maven项目,其中模块Foo
和Bar
是Java包。 Foo
包含Bar
继承的类。 Foo
和Bar
都有测试和调试的主要方法。模块位于文件夹Project
使用mvn clean package
编译整个项目可以正常工作。但是不能在Bar
模块中使用相同的命令进行编译。
在Project
中有一个包含以下内容的pom.xml:
...
<module>Foo</module>
<module>Bar</module>
<module>FooBar</module>
...
在Bar
中pom.xml
包含:
...
<dependency>
<groupId>com.example.foo</groupId>
<artifactId>Foo</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
...
当我尝试使用Maven从modules文件夹中编译Bar
时,我得到的错误是找不到兄弟包Foo
。下载的其他依赖项工作正常。
我做错了什么?
我对Maven很新,这似乎是一个初学者错误所以我认为有一个简单的答案。
答案 0 :(得分:2)
为了编译Bar
模块,必须至少从本地Maven存储库中检索人工制品com.example.foo:Foo:1.0.0-SNAPSHOT
。
在执行目标install
时,人工制品会保存在本地存储库中。由于您只在整个构建中执行clean package
,因此不会发生这种情况。
您必须在人工制品install
或整个项目上执行clean install
或Foo
。每次更新版本时,您还必须重建整个项目(或至少是本地依赖项)。