Maven:如何根据子模块是不是包含文件来激活配置文件?

Posted

技术标签:

【中文标题】Maven:如何根据子模块是不是包含文件来激活配置文件?【英文标题】:Maven: How to activate profile based on whether child module contains a file?Maven:如何根据子模块是否包含文件来激活配置文件? 【发布时间】:2014-02-27 05:32:18 【问题描述】:

我在 Mac 10.9.1 上使用 Maven 3.1.1。我想根据某些子模块是否包含文件来激活配置文件。我已经尝试了以下

    <profile>
        <id>deploy-war-to-jboss</id>
        <activation>
            <file>
                <exists>$session.executionRootDirectory/src/main/webapp/WEB-INF/web.xml</exists>
            </file>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.jboss.as.plugins</groupId>
                    <artifactId>jboss-as-maven-plugin</artifactId>
                    <version>$jboss.maven.plugin.version</version>
                    <configuration>
                        <hostname>$jboss.remote.hostname</hostname>
                        <port>$jboss.remote.port</port>
                    </configuration>
                    <executions>
                        <execution>
                            <id>deploy-to-jboss</id>
                            <phase>install</phase>
                            <goals>
                                <goal>deploy</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>

但在运行“mvm clean install”时,这个配置文件并没有被激活,尽管我已经验证了有问题的子模块包含该文件。我也试过 $project.basedir 没有运气。任何想法我如何做到这一点?

【问题讨论】:

【参考方案1】:

既然你在父 POM 中定义了配置文件(我猜)你应该试试这个

$basedir/name-of-your-child-module//src/main/webapp/WEB-INF/web.xml

此外,您应该尝试running Maven in debug mode 以在运行时获取更多信息:

mvm -X clean install

【讨论】:

我有几个满足条件的子模块。我在我的个人资料中想说的是,如果子模块有一个“web.xml”文件,请运行该配置文件,否则,不要运行它。所以我试图避免对事物进行硬编码。这有意义吗? 如果配置文件在父 POM 中并且所有子模块 POM 都继承自它,那么您应该能够使用 $project.basedir/src/main/webapp/WEB-INF/web.xml,因为 $project.basedir 是针对相应的子模块进行评估的。

以上是关于Maven:如何根据子模块是不是包含文件来激活配置文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在子模块中停用 Maven 配置文件?

在 Maven 构建期间跳过子模块

如何包含父 Spring 项目(使用 Git 子模块)?

如何使用 Maven 发布不同版本号的子模块?

maven工程无法加载其他子模块配置文件

如何从自定义 maven mojo 创建 maven 配置文件