我有以下项目以扁平结构的方式组织:
parentProject
+-pom.xml
projectWeb <depends on libraryA and libraryB>
+-pom.xml
libraryA
+-pom.xml
libraryB
+-pom.xml
parentProject中的pom.xml引用了其他模块,并用于继承和dependencyManagement,这里是一个片段:
<project>
    ....
    <modules>
        <module>../projectWeb</module>
        <module>../libraryA</module>
        <module>../libraryB</module>
    </modules>
    <dependencyManagement>
    ...
    </dependencyManagement>
    <build>
    ...
    </build>
    ....
</project>
在Jenkins中,我为每个项目都有一个maven作业,当我构建parentProject时,它工作正常,即.构建该modules部分中引用的每个项目.我遇到的问题是当我向SVN提交更改时libraryA,我希望在构建libraryA之后,重建projectWeb将要启动,但这并没有发生.谁知道我做错了什么?
提前致谢.
编辑
当我删除该modules部分时parentProject\pom.xml,它按预期工作,但我放弃了拥有父pom的聚合优势.
有几个类似的问题,但没有这样的.你如何处理这种情况(典型情况):
一个由8-11个子项目组成的项目,具有父工件/项目和一个主要项目,主要使用/声明其他项目作为模块.
问题是所有项目"严格"只共享公共依赖项,如testng, logging, apache commons and stuff.但总是喜欢其中3个使用50-60%相同的特定deps(apache-chemistry,jackrabbit,abdera等),另外2-3个也使用50-60%相同但不同的依赖.而主要的使用了很多相同的deps. 
我不能将这些"非严格"共享deps放入父项目中以供其他人继承.所以只有常见的deps才会被继承.并且有大量重复的依赖项.我只能通过管理他们的版本<dependencyManagement>.
另一个选择是父pom包含大多数依赖项,但子项目甚至继承了它们不需要的项.
我可以拥有多个父项目,但感觉不对.父项目的继承也可能是噩梦,因为如果你没有正确地记录/评论父pom定义你不知道项目需要什么依赖项.
另一种方法是创建仅作为依赖容器的pom工件 - 它们声明特定的依赖关系组,以便模块只声明那些以获得传递依赖关系.但是,嘿,你想部署和提交某种
OneDepArtifact声明 jackrabit, abdera, chemistry
AnotherDepArtifact声明 htmlcleaner, google-api, tika
ThirdDepArtifact声明 spring, httpclient, selenium
这是一个巨大的混乱,我不确定我<dependencyManagement>是否正确使用它,它似乎只对管理依赖版本有用.
我正在考虑将我的应用程序开发改编为"maven multimodule design".但是如果你想创建spring服务/ bean,只使用各种库,在一个模块中,你不在不同的模块中实现它们,只是因为它们使用其他模块也使用的库:-)