java – 如何为依赖于同一jar的两个独立项目设置maven
如果在其他地方回答这个问题,请指责我并指出正确的方向.
我是Maven的新手,并试图将我的头脑与我的项目一起使用.我有两个顶级项目,一个是Swing应用程序,另一个是一组Web服务.它们都依赖于同一个内部罐子.有什么好方法可以为此设置poms? 如果jar只被其中一个项目使用,那么看起来我会把它移到里面并使它成为一个模块.但是我不想要那个jar的源代码的两个(以及更多)副本. 看起来我可以这样做的一种方法是为Swing应用程序提供一个主pom,其中包含Swing应用程序和库jar作为模块.然后为Web应用程序设置另一个主pom以相同的方式设置.那会有意义吗?还有更好的方法吗? 目录结构目前非常简单: Development/ ----SwingApp/ ----WebServices/ ----CoreLibrary/ 方式太多信息和附带问题如下: 我继承了一个“构建系统”(使用松散术语),它是100%Netbeans自动生成的ant脚本.我开始尝试将它放入持续集成,TeamCity,我非常喜欢.我试图用它来构建WebServices项目时遇到了严重的问题.在我所知道的情况下,生成的ant(build-impl.xml)中有些东西无法在CI环境中被覆盖.在日常开发中将这与一些严重的类路径地狱相结合,你就会开始明白我为什么要去找maven. 这个问题包含的一个问题是我的团队中的开发人员似乎都习惯了.现在,Netbeans中的各个项目都有对“CoreLibrary”项目的项目引用.这意味着当在“CoreLibrary”中更改源代码并且开发人员在顶级应用程序上进行构建时,它还将根据需要构建CoreLibrary.可以在Maven中模拟吗?这将有助于缓解过渡.到目前为止,我看到Netbeans(6.7)没有使用maven版本,我认为我不能卖掉(还)在Netbeans之外进行日常构建工作. 解决方法
在您的开发目录中,您将拥有一个类似于以下内容的pom:
<project> <groupId>yourGroup</groupId> <artifactId>project</artifactId> <packaging>pom</packaging> <modules> <module>coreLibrary</module> <module>swingApp</module> <module>webServices</module> </modules> </project> 是的,我已经遗漏了其他一些元素,所以填写你需要的任何其他元素. 然后,您的coreLibrary,swingApp和webServices模块将各自具有一个带有父元素的pom,以及任何依赖项,如下所示 <project> <parent> <groupId>yourGroup</groupId> <artifactId>project</artifactId> <version>yourVersion</version> </parent> <artifactId>webServices</artifactId> <packaging>war</packaging> <version>yourVersion</version> <dependencies> <dependency> <groupId>yourGroup</groupId> <artifactId>coreLibrary</artifactId> <version>yourVersion</version> </dependency> </dependencies> </project> 如果你在根级别构建,那么它将构建所有3个模块,或者更好的是,你可以使用–also-make选项来仅构建webServices及其依赖项(在本例中为coreLibrary) mvn -am --projects webServices clean install (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |