Maven配置文件激活失败

时间:2018-02-08 10:16:29

标签: maven maven-profiles

我有一个父pom,它定义了当定义的文件夹存在时应激活的配置文件:

<groupId>common</groupId>
<artifactId>common-build</artifactId>

<profiles>
    <profile>
        <id>dependency-profile-ejb</id>
        <activation>
            <file>
                <exists>${basedir}/src/profile/dependency-ejb/</exists>
            </file>
        </activation>
        <dependencies>[...]</dependencies>
    </profile>
    <profile>
        <id>dependency-profile-jsf</id>
        <activation>
            <file>
                <exists>${basedir}/src/profile/dependency-jsf/</exists>
            </file>
        </activation>
        <dependencies>[...]</dependencies>
    </profile>
</profiles>

我有一个包含多个子模块的maven项目:

<parent>
    <groupId>common</groupId>
    <artifactId>common-build</artifactId>
</parent>

<groupId>project/groupId>
<artifactId>project-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>

<modules>
    <module>project-child-one<module>
</modules>

在子项目中,我只定义父依赖项:

<parent>
    <groupId>project</groupId>
    <artifactId>project-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>

<artifactId>project-child-one</artifactId>

在这个子项目中我定义了文件夹src/profile/dependency-ejb

如果我在eclipse中运行项目的构建,一切都按预期工作。然后我在jenkins中安装了该项目,但构建失败了。如果我将project-parent签出到一个干净的目录并尝试运行maven构建,那么构建也会失败。

为什么构建在eclipse中运行但不在命令行中运行?为什么common-build的父pom中的配置文件定义不受尊重?

1 个答案:

答案 0 :(得分:0)

经过一些进一步的测试后,我找到了解决方案。构建失败,因为缺少配置文件激活的文件夹。我已将项目添加到git并忘记了git不提交/推送空文件夹。

解决方案是在文件夹中添加一个空的.gitkeep以强制git提交/推送它们。