我有一个父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中的配置文件定义不受尊重?
答案 0 :(得分:0)
经过一些进一步的测试后,我找到了解决方案。构建失败,因为缺少配置文件激活的文件夹。我已将项目添加到git并忘记了git不提交/推送空文件夹。
解决方案是在文件夹中添加一个空的.gitkeep
以强制git提交/推送它们。