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

Maven:如何根据子模块是否包含文件来激活配置文件?,maven,profile,file-exists,activation,Maven,Profile,File Exists,Activation,我在Mac10.9.1上使用Maven 3.1.1。我想根据某些子模块是否包含文件来激活配置文件。我试过以下方法 <profile> <id>deploy-war-to-jboss</id> <activation> <file> <exists>${session.executionRootDirectory}/src/main

我在Mac10.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>

将战争部署到jboss
${session.executionRootDirectory}/src/main/webapp/WEB-INF/WEB.xml
org.jboss.as.plugins
jboss作为maven插件
${jboss.maven.plugin.version}
${jboss.remote.hostname}
${jboss.remote.port}
部署到jboss
安装
部署

但是当运行“mvm clean install”时,这个配置文件并没有被激活,尽管我已经验证了所讨论的子模块包含这个文件。我还尝试了${project.basedir},但运气不好。你知道我是如何做到这一点的吗?

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

${basedir}/name-of-your-child-module//src/main/webapp/WEB-INF/web.xml
此外,您应该尝试在运行时获取更多信息:

mvm -X clean install

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