模块中的Maven配置文件

时间:2011-08-26 14:23:23

标签: maven

我有一个包含多个模块的Maven Java EE项目。

PROJECT
 --EJB
 --WEB1
 --WEB2
 --EAR

现在我想创建一个编译并包含WEB1的配置文件和一个包含两者的配置文件

要从构建中排除/包含模块,我根据所选的配置文件在主pom.xml中包含所需的子模块。这很好。

问题是EAR模块中的依赖项。

如何排除模块WEB1或WEB2。重新定义配置文件部分不起作用。

问题是:是否有办法根据所选的配置文件控制项目模块中的依赖项

编辑:

我的错,我已经在根目录中直接创建了标签

2 个答案:

答案 0 :(得分:4)

根据配置文件排除模块是不可能的,但是包含与使用特殊功能'combine.children'一起使用,因为maven 3.0.2,在http://www.sonatype.com/people/2011/01/maven-how-to-merging-plugin-configuration-in-complex-projects/中描述

因此,您必须将EAR的最小内容定义为默认值,并使用配置文件在您的ear模块中以下列方式添加依赖项/模块:

<project ....>
    ...
    <name>EAR</name>
    ...
    <dependencies>
        <dependency>EJB</dependency> // specify groupId, artifactId, version, type ...
        <dependency>WEB1</dependency>
    </dependencies>
    <profiles>
        <profile>
            <id>build-with-WEB2</id>
            <dependencies>
                <dependency>WEB2</dependency> // specify groupId, artifactId, version, type ...
            </dependencies>
            <build>
                <plugins>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-ear-plugin</artifactId>
                    <version>${maven-ear-plugin.version}</version>
                    <configuration>
                        <modules combine.children="append">
                            <webModule>
                                <groupId>...</groupId>
                                <artifactId>WEB2</artifactId>
                                <bundleFileName>WEB2.war</bundleFileName>
                                ...
                            </webModule>
                        </modules>
                    </configuration>
                </plugins>
            </build>
        </profile>
    </profiles>
    <build>
        ...
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ear-plugin</artifactId>
                <version>${maven-ear-plugin.version}</version>
                <configuration>
                    ...
                    <modules>
                        <ejbModule>
                            <groupId>...</groupId>
                            <artifactId>EJB</artifactId>
                            <bundleFileName>EJB.jar</bundleFileName>
                            ...
                        </ejbModule>
                        <webModule>
                            <groupId>...</groupId>
                            <artifactId>WEB1</artifactId>
                            <bundleFileName>WEB1.war</bundleFileName>
                            ...
                        </webModule>
                    </modules>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

答案 1 :(得分:-1)

在以下链接中有一个类似的问题。也许有帮助:

Different dependencies for different build profiles in maven