Активировать профиль в зависимости от POM? - PullRequest
1 голос
/ 29 октября 2009

Моя компания пишет сопутствующие продукты для программного обеспечения для управления проектами, использующего 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

Полученная сборка не включает библиотеку интеграции или какие-либо из ее транзитивных зависимостей.

Ответы [ 2 ]

0 голосов
/ 16 декабря 2009

Почему бы вам не создать проект api70-deps pom и позволить своему военному и зависимому проекту одновременно задействовать его, активировать профиль или иным образом?

Этот подход творит чудеса для меня ... мои штаны становятся намного более аккуратными.

0 голосов
/ 29 октября 2009

Я думаю, что ваша проблема не относится к профилям вообще. Речь идет о том, как переходные зависимости работают для упаковки войн. По замыслу они не работают :) Военный архив содержит свои зависимости в папке WEB-INF / lib или, если он упакован в ear, он может делиться библиотеками с наушниками. Больше проблем вы можете прочитать в этой вики статье . Речь идет о Skinny Wars, но тема касается и вашей проблемы.

Для вас интересен также этот выпуск JIRA .

Быстрое, но не элегантное решение - заменить форму упаковки войной на пом (или создать дубликат пом с упаковкой пом).

...