maven-3 – 如何添加项目作为另一个项目的依赖项?

有两个独立的项目(myWarProject和MyEjbProject)。所以当我构建myWarProject我需要安装MyEjbProject到本地仓库,所以然后我可以在myWarProject中定义作为依赖和打包myWarProject成功。

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

我知道这可以通过ant构建实现,但不知道有没有办法通过maven处理?

我们可以使用“pom”创建父项目,并将其他两个项目移动到父项目下。但是,不幸的是,我不能这样做,因为目前我们已经有这两个作为单独的项目在CVS,我不能改变结构。如果我可以通过pom文件处理这个,这是什么Im寻找。

最佳答案
假设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>

这说,通常是更好(和首选方式)通过将其安装到存储库中,使其成为一个maven项目,并构建它或安装它,你已经看起来做的方式。

编辑:
但是,如果它们彼此依赖,则可以始终创建一个单独的父项目(必须是一个“pom”项目),将另外两个项目声明为其“模块”。 (子项目不必声明第三个项目为其父项)。因此,您将为新的父项目获得一个新目录,您也可能将这两个独立的项目:

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>

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

EDIT2:

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

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

现在你可以这样做(在maven 2中工作,只是尝试它):

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

转载注明原文:maven-3 – 如何添加项目作为另一个项目的依赖项? - 代码日志