Maven多模块项目中的相互依赖性以及Eclipse中的配置文件

时间:2019-07-11 07:26:20

标签: eclipse maven multi-module maven-profiles

我有一个像这样的Maven多模块项目:

parent
|- pom.xml
|
|- deps
|  |- pom.xml
|
|- core: depends on deps only
|  |- pom.xml
|
|- webserver: depends on core only
|  |- pom.xml 
  • 单位:
    • 没有代码,
    • 打包为jar
    • 在pom中具有所有第三方依赖项
  • 核心:
    • 具有主要代码和测试,
    • 打包为jar
    • 具有deps作为其唯一依赖项
  • 网络服务器:
    • 一些用作Web应用程序的代码(即servlet类),
    • 打包为war
    • 具有core作为其唯一依赖项

一切正常,即。 maven生成正常,webserver.war被正确打包,Eclipse编译正常,运行Eclipse的Tomcat中运行Webserver。

问题和问题:

然后,我为部门介绍了2个配置文件:

  • java7:包括所有与Java 7一起运行的第三方jar
  • java11:包括用于与Java 11一起运行的所有第三方jars

类似地,还为core创建了2个配置文件。这两个配置文件都取决于deps

Maven使用参数'-Pjava7'构建OK,但是Eclipse无法解析java7的{​​{1}}概要文件提供的软件包,即使我选择deps作为Active Maven概要文件(右键单击) -> Maven->选择java7core上的Maven配置文件。当我在Package Explorer面板中查看Maven Dependencies列表时,我看到的是deps提供的所有第3方jar。我在这里做错了什么?

我已经花了3天了。如果有人能对此有所启发,我将不胜感激。预先感谢。

如果我从部门删除java11配置文件,Eclipse可以正常工作。 Eclipse中的Tomcat也可以正常运行。

java11的pom.xml:

parent

<modules> <module>deps</module> <module>core</module> <module>webserver</module> </modules> 的pom.xml:

deps

<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> 的pom.xml:

core

0 个答案:

没有答案