提问者:小点点

如果父pom具有JavaEEBOM依赖项,那么是否应该在子pom中明确提及所有依赖项?


在我们的项目中,我们有用于 REST 层、EJB 层和域(实体)层的单独模块。

以下是对 REST 层的依赖关系:

            <dependency>
               <groupId>org.jboss.resteasy</groupId>
               <artifactId>resteasy-jaxrs</artifactId>
            <dependency>
                <groupId>org.jboss.resteasy</groupId>
                <artifactId>resteasy-jettison-provider</artifactId>
            </dependency>
            <dependency>
                <groupId>org.jboss.resteasy</groupId>
                <artifactId>resteasy-multipart-provider</artifactId>
            </dependency>
            <!-- Resteasy Server Cache -->
            <dependency>
                <groupId>org.jboss.resteasy</groupId>
                <artifactId>resteasy-cache-core</artifactId>
            </dependency>
            <dependency>
                <groupId>org.jboss.resteasy</groupId>
                <artifactId>resteasy-jackson-provider</artifactId>
            </dependency>

问题1:org.jboss是否存在单个依赖项。resteasy提供了所有这些?有可能简化吗?所有这些依赖项都应该显式声明吗?如果没有,RestEasy默认提供了什么?事实上,我使用的是JBoss AS 6,因此这些依赖项仅用于编译时。它们的范围是提供的

同样适用于我们的域层:

</dependency>
                <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <scope>provided</scope>
        </dependency>

                <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-annotations</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-commons-annotations</artifactId>
            <scope>provided</scope>
        </dependency>

                <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <scope>provided</scope>
        </dependency>

问题2:为什么在我们的pom中明确声明了这些。xml?hibernate上的一个依赖项不应该为其他依赖项提供默认值吗。

Q3以下是重构的有效方法吗(使用Jboss-bom)?在父pom中有一个依赖项。xml和每个模块只是继承自父模块。就这样,孩子pom。xml是简化和简短的。这有什么坏处?我会得到上面每个REST和域层中显式提供的所有依赖项吗。

<dependency>
        <groupId>org.jboss.bom.eap</groupId>
        <artifactId>jboss-javaee-6.0-with-resteasy</artifactId>
        <version>${jboss.bom.version}</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>

共1个答案

匿名用户

我认为这将为您提供所需的一切:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.jboss.bom</groupId>
            <artifactId>jboss-javaee-6.0-with-all</artifactId>
            <version>1.0.7.Final</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
        <dependency>
            <groupId>org.jboss.spec</groupId>
            <artifactId>jboss-javaee-all-6.0</artifactId>
            <version>3.0.3.Final</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>xalan</groupId>
            <artifactId>xalan</artifactId>
            <version>2.7.2</version>
            <scope>provided</scope>
        </dependency>
</dependencies>

您可以获得JavaEE6(所有API)中的所有内容。如果您想要某些特定于RestEasy的功能,则需要为此添加依赖项。

由于一个bug,Xalan依赖项是必需的,请看这篇文章。

对于WildFly 8.2上的Java EE 7,请使用以下依赖项:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.wildfly.bom</groupId>
            <artifactId>jboss-javaee-7.0-with-all</artifactId>
            <version>8.2.0.Final</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.jboss.spec</groupId>
        <artifactId>jboss-javaee-all-7.0</artifactId>
        <version>1.0.2.Final</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>