如何将项目添加为另一个项目的依赖项?

有两个独立的项目( myWarProjectMyEjbProject )。 因此,当我构buildmyWarProject ,需要将MyEjbProject安装到本地存储库中,然后我可以在myWarProject中将其定义为依赖项,并成功打包myWarProject。

有没有办法处理这个问题,而无需单独安装MyEjbProject ,也没有定义为父模块。

我知道这可以通过ant build来实现,但是想知道是否有办法通过maven来处理?

我们可以用“pom”创build父项目,并将其他两个项目移动到父项目下。 然而,不幸的是,我不能这样做,因为目前我们已经把这两个作为CVS中的单独项目,我不能改变结构。 如果我可以通过pom文件来处理这个,这就是我在寻找的东西。

假设MyEjbProject不是您拥有的或者想用Maven构build的另一个Maven项目,那么可以使用系统依赖关系链接到项目的现有jar文件

 <project> ... <dependencies> <dependency> <groupId>yourgroup</groupId> <artifactId>myejbproject</artifactId> <version>2.0</version> <scope>system</scope> <systemPath>path/to/myejbproject.jar</systemPath> </dependency> </dependencies> ... </project> 

这就是说,通过将它安装到maven项目并构build它,或者按照您已经完成的方式进行安装,通常是更好的(也是最好的方法)将软件包安装到仓库中。

编辑:如果他们,但是,相互依赖,你可以随时创build一个单独的父项目(必须是一个“POM”项目)声明另外两个项目作为其“模块”。 (儿童项目不必宣布第三个项目为他们的父母)。 因此,你会得到一个新的父项目目录,你也很可能把这两个独立的项目:

 parent |- pom.xml |- MyEJBProject | `- pom.xml `- MyWarProject `- pom.xml 

父项目将得到一个“模块”部分来命名所有子模块。 然后,聚合器将使用子模块中的依赖关系来实际查找要构build项目的顺序)

 <project> ... <artifactId>myparentproject</artifactId> <groupId>...</groupId> <version>...</version> <packaging>pom</packaging> ... <modules> <module>MyEJBModule</module> <module>MyWarModule</module> </modules> ... </project> 

这样,项目可以相互关联,但是(一旦它们安装在本地存储库中)仍然可以独立地用作其他项目中的工件

EDIT2:

最后,如果您的项目不在相关的目录中,您可以尝试将它们作为相关模块:

 filesystem |- mywarproject | `pom.xml |- myejbproject | `pom.xml `- parent `pom.xml 

现在你可以做到这一点(在maven 2中工作,只是试了一下):

 <!--parent--> <project> <modules> <module>../mywarproject</module> <module>../myejbproject</module> </modules> </project>