[英]How to inherit Java-EE API for Webapps in Maven?
我的项目具有多个jar和wars的以下结构:
root (pom)
+--core (jar)
+--webapp (jar)
+--childgroup (pom)
+--actual-web-application (war)
+--some-library (jar)
+--othergroup (pom)
+--another-web-application (war)
实际的Web应用程序取决于Webapp,而后者取决于核心。 理想情况下,我只想在webapp模块中指定Java EE依赖关系,然后让real-web-application继承它。 但是因为它是提供的依赖项,所以它不起作用,我必须在每个Web应用程序中手动为Java EE,jax-rs等提供的东西添加依赖项。
是否有任何方法(例如,dependencyManagement)可以让实际的Web应用程序从Web应用程序继承javaee-api?
在Webapp的pom.xml中,我尝试了以下操作:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
</dependencies>
</dependencyManagement>
在实际的网络应用程序的pom.xml中:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<scope>provided</scope>
</dependency>
但是,它遵循该版本,因此似乎仍然没有继承webapp的pom.xml的依赖关系。
也将<scope>provided</scope>
放入dependencyManagement
所提供的依赖项将像其他依赖项一样被继承。
父pom.xml:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
</dependencyManagement>
子pom.xml:
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
</dependency>
</dependencies>
和孩子的依赖树:
--- maven-dependency-plugin:2.8:tree (default-cli) @ child ---
com.iei.web:child:war:1.0-SNAPSHOT
\- javax:javaee-api:jar:7.0:provided
\- com.sun.mail:javax.mail:jar:1.5.0:provided
\- javax.activation:activation:jar:1.1:provided
如果您要完全避免在子级中显式定义依赖项,那么假设您希望每个子级模块都继承它,那么您当然必须将其移出父级中的dependencyManagement
并使其成为直接依赖项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.