2016-01-31 145 views
0

我有一个多模块Maven项目,其中模块FooBar是Java包。 Foo包含从Bar继承的类。 FooBar都有测试和调试的主要方法。模块驻留在文件夹ProjectMaven多模块项目中的源依赖项 - 无法自行编译模块

编译整个项目使用mvn clean package工作正常。但不能使用Bar模块中的相同命令进行编译。

Project存在包含一个pom.xml:

... 
<module>Foo</module> 
<module>Bar</module> 
<module>FooBar</module> 
... 

Barpom.xml包含:

... 
    <dependency> 
     <groupId>com.example.foo</groupId> 
     <artifactId>Foo</artifactId> 
     <version>1.0.0-SNAPSHOT</version> 
    </dependency> 
    ... 

当试图使用Maven从模块文件夹内的编译Bar我得到错误,无法找到兄弟软件包Foo。下载的其他依赖项正常工作。

我在做什么错?

对于Maven来说,我很新,这似乎是一个初学者错误,所以我假设有一个简单的答案。

回答

2

为了编译Bar模块,人造体com.example.foo:Foo:1.0.0-SNAPSHOT必须至少从本地Maven存储库中检索。

当执行目标install时,人造物保存在本地存储库中。由于您在整个构建中只执行clean package,因此不会发生这种情况。

您必须对人工制品Foo或整个项目执行installclean install。每次你更新版本时,你也必须重建整个项目(或者至少是本地依赖项)。

+0

所以你说的是我需要在本地存储库中有一个编译好的'Bar'模块.jar?那只能通过'mvn clean install'在那个包上实现吗?另外,当我在'Foo'包上执行'mvn clean install'时,Bar'.jag仍然会保留在本地回购中吗?对不起所有的问题,我现在没有可用的源代码来测试。 –

+0

@EinarSundgren是的,是的(尽管Maven的软件包术语是人造的),是的。 – hotzst