2012-11-02 83 views
5

我有项目与其他项目的几个依赖项。如何使maven构建依赖项目

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>group1</groupId> 
<artifactId>artifact1<artifactId> 
<name>RealtyRegistry</name> 
<packaging>war</packaging> 
<version>1.0.0-SNAPSHOT</version> 
<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 
<dependencies> 
    <dependency> 
     <groupId>group1</groupId> 
     <artifactId>artifact2</artifactId> 
     <version>1.0.0</version> 
    </dependency> 
    <dependency> 
     <groupId>group1</groupId> 
     <artifactId>artifact3</artifactId> 
     <version>1.0.0</version> 
    </dependency> 
</dependencies> 

所有这些都是我同时开发的。我将版本添加到所有项目的文件中,并且我需要与相关项目一起构建主项目。如何为没有树结构的项目做到这一点?

可以有2个或更多的项目层次覆盖树,例如:A取决于B,C; D取决于C,E; A和D是独立的。

回答

6

您可以使用“模块”一起构建多个项目。通常情况下,您可以通过创建一个<packaging>pom</packaging>的“母亲”项目并使用<modules>标签将实际项目添加为模块来完成此操作。然后,当您构建“母亲”项目时,所有模块都将按照正确的顺序自动构建。

下面是来自Maven by Example书为例:

<groupId>org.sonatype.mavenbook.multi</groupId> 
<artifactId>simple-parent</artifactId> 
<version>1.0</version> 
<packaging>pom</packaging> 

<modules> 
    <module>simple-weather</module> 
    <module>simple-webapp</module> 
</modules> 

注意,这需要你有在相应的子文件夹命名你的模块。例如,你会在某些文件夹中的“妈妈” POM:

/.../my-project/ 

,并在模块:

/.../my-project/simple-weather/ 
/.../my-project/simple-webapp/ 

欲了解更多信息,请阅读这本书的Chapter 6. A Multi-module Project,它是在Sonatype的免费提供网站。

+0

事情是我的maven项目不形成一个树,把它们放在子文件夹中。可以有2个或更多的项目层次覆盖树,例如:A取决于B,C; D取决于C,E; A和D是独立的。 – Vyacheslav

+0

在从属模块pom中指定这些依赖关系。 – Will

+0

@Vyacheslav这里有一个误解:模块系统与依赖关系无关。你的项目之间可能有任意的依赖关系。唯一的新东西是,你将它们声明为主项目的模块,并将它们放在子文件夹中并排放置。 – rolve

相关问题