2010-11-20 50 views
4

我有一个Maven POM,它汇总了几个模块。Maven与目标聚合聚甲醛?

<project [stuff]> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.fuhu.osg</groupId> 
    <artifactId>UserManagement</artifactId> 
    <packaging>pom</packaging> 
    <version>1.0</version> 
    <name>UserManagement</name> 

    <modules> 
    <module>core</module> 
    <module>war</module> 
    <module>ejbs</module> 
    <module>ear</module> 
    </modules> 
</project> 

我想执行一个不适用于顶层POM模块的目标。像 mvn db-migrate:创建。就像这样,它似乎试图针对子项目运行所述命令,这对每一个其他目标都是正确的,但不是为了这个。

有没有一种方法可以制作一个Maven POM,既是一些目标的集合,也是一个为其他人设计的普通项目?

+0

您是否试过配置文件?我认为这可能适用于这种情况。 – javamonkey79 2010-11-20 00:35:05

回答

6

您可能会受到Maven构建配置文件的帮助。使用特定配置文件时,可以轻松配置一个要调用的子模块。型材

$ mvn -Pdb db-migrate:create 

自动激活可能使用的系统环境等,遗憾的是我不能找到一个Maven:

http://maven.apache.org/guides/introduction/introduction-to-profiles.html

... 
    <profiles> 
    <profile> 
     <id>db</id> 
     <modules> 
     <module>core</module> 
     </modules> 
    </profile> 
    <profile> 
     <id>all</id> 
     <activation> 
     <activeByDefault>true</activeByDefault> 
     </activation> 
     <modules> 
     <module>core</module> 
     <module>war</module> 
     <module>ejbs</module> 
     <module>ear</module> 
     </modules> 
    </profile> 
... 

的东西,如先从数据库配置文件你的数据库任务用于命令行目标的属性,该属性将启用特定目标运行时自动激活配置文件。

+0

辉煌。这会很好。关于您的示例的一个注意事项:我需要将activeByDefault包装在激活父标记中。 – 2010-11-22 16:48:41