У меня есть мультимодульный проект 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>