Взаимозависимости в многомодульном проекте maven с профилями в Eclipse - PullRequest
0 голосов
/ 11 июля 2019

У меня есть мультимодульный проект Maven, подобный этому:

parent
|- pom.xml
|
|- deps
|  |- pom.xml
|
|- core: depends on deps only
|  |- pom.xml
|
|- webserver: depends on core only
|  |- pom.xml 
  • Депс:
    • без кодов,
    • пакет как jar,
    • имеет все сторонние зависимости в pom
  • Core:
    • содержит основные коды и тесты, пакет
    • как jar
    • имеет deps в качестве единственной зависимости
  • Веб-сервер:
    • некоторые коды для использования в качестве веб-приложения (т. Е. Классы сервлетов),
    • пакет как war,
    • имеет core в качестве единственной зависимости

Все работало нормально, т.е.maven строит ОК, webserver.war упакован правильно, Eclipse компилирует OK, работает веб-сервер с Tomcat внутри eclipse OK.

ПРОБЛЕМА и ВОПРОС:

Затем я представил 2 профиля для deps:

  • java7: включает в себя все сторонние jar-файлы для работы с java 7
  • java11: включает в себя все сторонние jar-файлы для работы с java 11

Аналогично, для core также создаются 2 профиля.Оба профиля зависят от deps.

Maven строит ОК с аргументом '-Pjava7', но Eclipse не может разрешить пакеты, предоставленные java7 профилем deps, хотя я выбрал java7 в качестве активного профиля Maven (щелкните правой кнопкой мыши -> Maven-> Выбрать профили Maven) для core и deps.Когда я просматриваю список зависимостей Maven на панели Package Explorer, я вижу вместо этого все сторонние файлы jar, предоставленные java11.Что я тут не так сделал?

Я уже потратил на это 3 дня.Буду признателен, если кто-нибудь сможет пролить свет на это.Заранее спасибо.

Если я удалю профиль java11 из deps, Eclipse работает нормально.Tomcat в Eclipse также работает нормально.

parent pom.xml:

<modules>
    <module>deps</module>
    <module>core</module>
    <module>webserver</module>
</modules>

deps pom.xml:

<parent>....</parent>
<profiles>
    <profile>
        <id>java11</id>
        <activation>
            <jdk>11</jdk>
        </activation>
        <properties>
            <powermock.version.two>2.0.2</powermock.version.two>
            <toolkit.version.two>2.0.2</toolkit.version.two>
        </properties>
        <dependencies>
            <!-- java 11 specific deps -->
            <dependency>
                <groupId>org.powermock</groupId>
                <artifactId>powermock-module-javaagent</artifactId>
                <version>${powermock.version.two}</version>
            </dependency>
            <dependency>
                <groupId>org.powermock</groupId>
                <artifactId>powermock-module-junit4-rule-agent</artifactId>
                <version>${powermock.version.two}</version>
            </dependency>
            <!-- other dependencies here which appear in both profiles -->
            .............
      </dependencies>
  </profile>
  <profile>
        <id>java7</id>
        <activation>
            <jdk>1.7</jdk>
        </activation>
        <properties>
            <powermock.version.two>1.2.3</powermock.version.two>
            <toolkit.version.one>1.3.4</toolkit.version.two>
        </properties>
        <dependencies>
            <!-- java 7 specific deps -->
            <dependency>
                <groupId>org.powermock</groupId>
                <artifactId>powermock-module-javaagent</artifactId>
                <version>${powermock.version.one}</version>
            </dependency>
            <dependency>
                <groupId>org.powermock</groupId>
                <artifactId>powermock-module-junit4-rule-agent</artifactId>
                <version>${powermock.version.one}</version>
            </dependency>
            <!-- other dependencies here which appear in both profiles -->
            .............
    </dependencies>
  </profile>
</profiles>

core pom.xml:

<parent>....</parent>
<dependencies>
  <dependency>
    <groupId>group.com</groupId>
    <artifactId>deps</artifactId>
    <version>${project.version}</version>
    </dependency>
</dependencies>
<profiles>
    <profile>
        <id>java11</id>
        <activation>
            <jdk>11</jdk>
        </activation>
        <build><plugins>... some plugins specific for java 11</plugins></build>
  </profile>
  <profile>
        <id>java7</id>
        <activation>
            <jdk>1.7</jdk>
        </activation>
        <build><plugins>... some plugins specific for java 7</plugins></build>
  </profile>
</profiles>  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...