2010-11-20 7 views
4

У меня есть Maven POM, который объединяет несколько модулей.Maven Совокупный POM с целью?

<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: create. Как, кажется, это попытки запустить указанную команду против подпроектов, что верно для каждой цели OTHER, но не для этого.

Есть ли способ сделать Maven POM, который является совокупностью для некоторых целей и обычного проекта для других?

+0

Вы пробовали профили? Я думаю, что это может сработать в этом случае. – javamonkey79

ответ

6

Возможно, вам помогут профили 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> 
... 

Начните дб задачи с профилем дб с чем-то вроде:

$ mvn -Pdb db-migrate:create 

Автоматическая активация профилей возможна с помощью системной среды и т.д. К сожалению, я не могу найти Maven свойство для цели командной строки, которое позволит автоматически активировать профиль при выполнении конкретной задачи.

+0

Блестящий. Это будет отлично. Одна заметка о вашем примере: мне нужно было включить activeByDefault в родительский тег активации. –

Смежные вопросы