m2e не импортирует зависимость из профиля - PullRequest
0 голосов
/ 09 ноября 2018

Я придумал этот упрощенный контрольный пример проблемы, с которой я столкнулся в очень большом проекте, над которым я работаю. Важным моментом является наличие некоторого кода и его зависимостей, активированных только в определенном профиле. Вот файл POM, чтобы продемонстрировать это:

<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>mytest</groupId>
  <artifactId>project1</artifactId>
  <version>1.0</version>

  <properties>
    <src.dir>src/main/java</src.dir>
  </properties>
  <build>
    <sourceDirectory>${src.dir}</sourceDirectory>
  </build>

  <profiles>
    <profile>
      <id>fox</id>
      <properties>
        <src.dir>src/fox/java</src.dir>
      </properties>
      <dependencies>
        <dependency>
          <groupId>org.apache.commons</groupId>
          <artifactId>commons-lang3</artifactId>
          <version>3.8.1</version>
        </dependency>
      </dependencies>
    </profile>
  </profiles>
</project>

И в каталоге src / fox / java / project1 относительно POM я получил этот простой класс, использующий зависимость jar от pom:

package project1;
import org.apache.commons.lang3.BooleanUtils;
public class C1 {
    public static void main(String[] args) {
        System.out.println(BooleanUtils.isTrue(Boolean.FALSE));
    }
}

Я могу построить вышеупомянутый проект с помощью этой команды без проблем:

mvn -Pfox package

Но я не знаю, как правильно импортировать этот проект Maven в Eclipse. Нарушение можно увидеть, если я открою его POM в Eclipse и наблюдаю его на вкладке «Зависимости». JAR-файл commons-lang3 не отображается там по умолчанию. Только если я нажму на кнопку «Показать унаследованные зависимости», перед ним появится иконка, по-видимому, обозначающая, что она «унаследована».

Зависимости POM

Но я не понимаю, откуда это может быть "унаследовано". Я также хочу добавить, что это показывает как "нормальную" зависимость, если я не использую профили.

Я указал профиль "fox" во время импорта и убедился, что он был выбран в Eclipse. Я также попробовал опцию «Обновить проект» из Eclipse, которая не имела никакого значения.

Это само по себе не беспокоило бы меня, если бы оно не было симптомом большей проблемы, с которой я сталкиваюсь. В нашем приложении такой проект, как в примере, является зависимостью другого проекта с WAR-упаковкой. И когда такой проект развертывается в Tomcat, работающем под Eclipse, баночка с картинки не включается в описание развертывания и, естественно, приложение не запускается.

1 Ответ

0 голосов
/ 09 ноября 2018

Профили в зависимостях не активированы

https://issues.apache.org/jira/browse/MNG-1388

...