有几个类似的问题,但没有像这样。如何处理这种情况(典型场景):
一个由8-11个子项目组成的项目,有一个父项目/项目和一个主要项目,主要使用/声明其他项目为模块。
问题是,所有项目“严格地”只共享公共依赖项,比如testng, logging, apache commons and stuff。但与3一样,它们中的3种使用50%-60%相同的特定deps (apache-化学、野兔、abdera等),另外2-3种也使用50%-60%的相同但不同的依赖。而主程序使用的是许多相同的deps.
我不能把那些“非严格的”共享deps放到父项目中,让其他人继承它们。所以只有普通的代言人才是遗传的。而且还有很多重复的依赖关系。我只能通过<dependencyManagement>来管理他们的版本。
另一种选择是让父pom包含大部分依赖项,但是子项目继承的甚至是他们不需要的。
我可以有一个以上的家长项目,但感觉不对。此外,来自父项目的继承可能是一场噩梦,因为如果不正确地记录/注释父pom定义,您就不知道项目需要什么依赖项。
另一种方法是创建仅作为依赖容器的pom构件--它们声明特定的依赖组,这样模块就可以声明这些组件以获得传递的依赖关系。但是,嘿,你愿意部署并提交某种
OneDepArtifact声明jackrabit, abdera, chemistry
AnotherDepArtifact声明htmlcleaner, google-api, tika
ThirdDepArtifact声明spring, httpclient, selenium
这是一个巨大的混乱,我不确定我是否正确地使用了<dependencyManagement>,它似乎只对管理依赖型版本有用。
我正在考虑将我的应用程序开发适应"maven多模块设计“。但是,如果您想创建spring服务/bean,只使用不同的库,在一个模块中,您不会在不同的模块中实现它们,仅仅是因为它们使用的是库,而其他模块也使用:-)
发布于 2011-07-19 17:57:29
Maven 3.1应该通过引入"mixins“来解决这个问题。与此同时,我似乎可以通过适当使用概要文件获得大多数所需的特性,正如我在这篇博客文章中所描述的那样:
http://weblogs.java.net/blog/fabriziogiudici/archive/2011/07/19/maven-pom-composition-means-profiles
请让我知道你是否觉得它有用。
https://stackoverflow.com/questions/6347913
复制相似问题