使用maven构建后,在war文件中使用Axis 2依赖项和geronimo jar

时间:2013-06-21 17:20:56

标签: maven jboss wsdl axis2

我是轴新手,请耐心等待。 我从WSDL端点生成了java文件,每个java文件都有

implements org.apache.axis2.databinding.ADBBean{

这意味着我需要在编译范围内的maven pom.xml中具有axis2.jar的依赖关系(如果我错了,请纠正我)。

但是,axis2.jar依赖项也会下载很多geronimo文件。但我正在使用JBOSS。我实际上并不想在我的战争中使用geronimo文件。

这是否真的有必要拥有这些 geronimo 罐子?或者在pom.xml中指定axis2.jar编译时依赖项时,我可能做错了什么?

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.4</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2</artifactId>
        <version>1.6.2</version>
    </dependency>

    <dependency>
        <groupId>org.apache.ws.commons.axiom</groupId>
        <artifactId>axiom-api</artifactId>
        <version>1.2.14</version>
    </dependency>

    <dependency>
        <groupId>org.apache.ws.commons.axiom</groupId>
        <artifactId>axiom-impl</artifactId>
        <version>1.2.14</version>
    </dependency>

    <dependency>
        <groupId>org.apache.ws.commons.schema</groupId>
        <artifactId>XmlSchema</artifactId>
        <version>1.3.2</version>
    </dependency>

    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-transport-local</artifactId>
        <version>1.6.2</version>
    </dependency>

    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-transport-http</artifactId>
        <version>1.6.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.neethi</groupId>
        <artifactId>neethi</artifactId>
        <version>3.0.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.geronimo.specs</groupId>
        <artifactId>geronimo-jta_1.1_spec</artifactId>
        <version>1.1</version>
        <scope>provided</scope>
    </dependency>

1 个答案:

答案 0 :(得分:3)

事实上,免费在线图书“Maven:The Complete Reference”在其"Conflict Resolution"

部分描述了您的确切案例

您所依赖的Apache Axis2库实现了Java EE规范的一部分,因此在Geronimo“Java EE Spec”库上具有编译范围传递依赖性。这些规范库仅实现Java EE标准。所以,如果你检查(例如)

的内容

jar -tf geronimo-javamail_1.4_spec-1.7.1.jar

你会发现(除其他外)。

javax/
javax/mail/
javax/mail/Address.class
javax/mail/AuthenticationFailedException.class
javax/mail/Authenticator.class
(etc.)

因此,使用您的应用程序部署这些Geronimo jar应该没有任何害处,但如果它真的困扰您(或者如果您确实遇到问题),则可以使用<exclusions>排除传递依赖性块:

<dependency>
    <groupId>org.apache.ws.commons.axiom</groupId>
    <artifactId>axiom-api</artifactId>
    <version>1.2.14</version>
    <exclusions>
      <exclusion>
        <groupId>org.apache.geronimo.specs</groupId>
        <artifactId>geronimo-activation_1.1_spec</artifactId>
      </exclusion>
      <exclusion>
        <groupId>org.apache.geronimo.specs</groupId>
        <artifactId>geronimo-javamail_1.4_spec</artifactId>
      </exclusion>
    </exclusions>
</dependency>

JBoss发布了自己的规格罐,但除非遇到实际问题,否则你不应该费心去除排除geronimo Jars的麻烦。

或者,如果您确定知道这是您的部署容器,则可以考虑使用JBoss Web Services