Maven 3 如何将一个项目添加为另一个项目的依赖项?
有两个独立的项目(Maven 3 如何将一个项目添加为另一个项目的依赖项?,maven-3,Maven 3,有两个独立的项目(myWarProject和MyEjbProject)。因此,当我构建myWarProject时,我需要将MyEjbProject安装到本地存储库中,这样我就可以在myWarProject中定义为依赖项并成功打包myWarProject 是否有一种方法可以处理此问题,而无需单独安装MyEjbProject,也无需将其定义为父模块 我知道这可以通过ant构建来实现,但我想知道是否有一种方法可以通过maven来处理 我们可以使用“pom”创建父项目,并将其他两个移动到父项目下。然而,
myWarProject
和MyEjbProject
)。因此,当我构建myWarProject
时,我需要将MyEjbProject
安装到本地存储库中,这样我就可以在myWarProject中定义为依赖项并成功打包myWarProject
是否有一种方法可以处理此问题,而无需单独安装MyEjbProject
,也无需将其定义为父模块
我知道这可以通过ant构建来实现,但我想知道是否有一种方法可以通过maven来处理
我们可以使用“pom”创建父项目,并将其他两个移动到父项目下。然而,不幸的是,我不能这样做,因为目前我们已经在CVS中有这两个单独的项目,我不能改变结构。如果我可以通过pom文件来处理这个问题,这就是我要找的。假设MyEjbProject不是您拥有的或希望使用Maven构建的另一个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>
父项目将获得一个“modules”部分来命名所有子模块。然后,聚合器将使用子模块中的依赖项来实际查找项目的构建顺序)
现在您可以这样做了(在maven 2中工作,刚刚尝试过):
../MyWarp项目
../myejbproject
你好,西蒙,谢谢你的快速回复。事实上,MyEjbProject是另一个maven项目,我在构建MyWarp项目时需要构建它。有没有办法在MyWarp项目中定义MyEjbProject pom?请告诉我:它们以何种方式相互依赖?现在,war项目似乎依赖ejb来构建完整的web应用程序。在这种情况下,这两个项目终究不会如此独立。我编辑了我的答案(最后添加了一些内容),希望这会更接近你的问题。对我的答案进行第二次编辑,也许这次我们很幸运:)嗨,西蒙,是的,正如你所说,我们可以创建带有“pom”的父项目,并将其他两个移动到父项目下。然而,不幸的是,我不能这样做,因为目前我们已经在CVS中有这两个单独的项目,我不能改变结构。如果我能通过pom文件处理这个问题,这就是我要找的。你可以用你刚才在评论中提供的附加信息来编辑你的问题:这可能会让其他试图回答的人澄清你的问题!如果没有其他帮助的话,作为最后一种手段:因为它们已经分开了,您能不能不将它们从CVS签出到本地文件系统上相应的子目录中?将MyEJBProject签出到目录“parent/MyEJBProject”中,并将MyWarProject签出到“parent/MyWarProject”中。不过,这可能是维护的噩梦……谢谢西蒙。我想知道处理这类场景的最佳实践是什么?刚刚添加了另一个解决方案,也许这最终会有所帮助。关于你在评论中的最后一个问题:我自己实际上从未有过这种情况。每当我们构建单独的模块时,我们都将它们放在一个中央存储库(如sonatype nexus)中,供其他项目参考。因此,您构建第一个项目(比如ejb项目),部署它,然后使用已经构建的ejb项目工件(而不是maven项目本身)构建另一个项目(war项目)
parent
|- pom.xml
|- MyEJBProject
| `- pom.xml
`- MyWarProject
`- pom.xml
<project>
...
<artifactId>myparentproject</artifactId>
<groupId>...</groupId>
<version>...</version>
<packaging>pom</packaging>
...
<modules>
<module>MyEJBModule</module>
<module>MyWarModule</module>
</modules>
...
</project>
filesystem
|- mywarproject
| `pom.xml
|- myejbproject
| `pom.xml
`- parent
`pom.xml
<!--parent-->
<project>
<modules>
<module>../mywarproject</module>
<module>../myejbproject</module>
</modules>
</project>