Ошибка активации файла профиля Maven
У меня есть родительский 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, сборка тоже не удалась.
Почему сборка выполняется в затмении, а не в командной строке? Почему определение профиля в родительском помете common-build
не соблюдается?
1 ответ
После некоторых дальнейших испытаний я нашел решение. Сборка не удалась, потому что папки для активации профиля отсутствовали. Я добавил проект в git и забыл, что git не фиксирует / отправляет пустые папки.
Решение состоит в том, чтобы добавить пустой .gitkeep
в папках, чтобы заставить git зафиксировать / нажать их.