Моя компания пишет сопутствующие продукты для программного обеспечения для управления проектами, использующего Java API этого программного обеспечения. Они выпускают новые версии API с новыми выпусками своих продуктов, а также точечные выпуски для исправления ошибок и т. Д. Мы должны поддерживать клиентов, использующих различные версии их программного обеспечения (и, соответственно, их API). Чтобы сделать это без ненужного дублирования кода, мы определили профили в наших продуктах, которые включают необходимые зависимости для каждой версии API.
У меня есть военный проект, построенный с использованием этой техники с активированным профилем api70, и другой проект, который зависит от этого военного проекта с типом pom, для того, чтобы задействовать зависимости войны. Проблема заключается в том, что при создании этого второго проекта зависимые от профиля зависимости не включаются, хотя я определяю -Papi70 в командной строке maven при построении зависимого проекта.
Есть ли способ заставить это работать?
В военном проекте:
<!-- API 7.0 profile. -->
<profile>
<id>api70</id>
<dependencies>
<dependency>
<groupId>com.bigcompany</groupId>
<artifactId>integrationlibrary</artifactId>
<version>7.0-a</version>
</dependency>
</dependencies>
<properties>
<apiversion>api70</apiversion>
</properties>
</profile>
В зависимом проекте:
<!-- Depend on war as type=pom for dependency mediation. -->
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>warproject</artifactId>
<version>${warVersion}</version>
<type>pom</type>
</dependency>
Командная строка, используемая для построения зависимого проекта:
mvn -P api70 clean package
Полученная сборка не включает библиотеку интеграции или какие-либо из ее транзитивных зависимостей.