繁体   English   中英

如何在Maven中继承Web应用程序的Java-EE API?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM