You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Michael Osipov (JIRA)" <ji...@codehaus.org> on 2014/06/17 21:40:11 UTC
[jira] (MNG-4770) WSDL dependencies should not be transitive
[ https://jira.codehaus.org/browse/MNG-4770?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Osipov updated MNG-4770:
--------------------------------
Affects Version/s: (was: 2.2.x (to be reviewed))
> WSDL dependencies should not be transitive
> ------------------------------------------
>
> Key: MNG-4770
> URL: https://jira.codehaus.org/browse/MNG-4770
> Project: Maven 2 & 3
> Issue Type: Bug
> Components: Dependencies
> Reporter: Ove Gram Nipen
> Assignee: Benjamin Bentmann
>
> Some web service frameworks, such as CXF, lets you deploy wsdl artifacts in the maven repository. When another project (the client) depends on a wsdl artifact, the client should not receive the dependencies of the web service project transitively, since the web service is isolated.
> It is not possible to work around the problem by declaring the dependencies of the web service project as optional, since this leads to missing jar files in the web service's {{WEB-INF/lib}}.
> More specifically:
> Say you have a service called {{HelloService}}, defined in its own pom:
> {code}
> <project>
> <groupId>com.example</groupId>
> <artifactId>HelloService</artifactId>
> <version>1.0</version>
> <packaging>war</packaging>
> <dependencies>
> <dependency>
> <dependency>
> <groupId>org.springframework</groupId>
> <artifactId>spring-core</artifactId>
> <version>2.5.6</version>
> </dependency>
> ...
> </project>
> {code}
> {{HelloService}} uses the {{cxf-java2ws-plugin}}, which generates a wsdl file and installs it in the maven repository during {{mvn install}}.
> You then have a client project called {{HelloConsumer}}, defined in its own pom:
> {code}
> <project>
> <groupId>org.something</groupId>
> <artifactId>HelloConsumer</artifactId>
> <packaging>war</packaging>
> <dependencies>
> <dependency>
> <groupId>com.example</groupId>
> <artifactId>HelloService</artifactId>
> <version>1.0</version>
> <type>wsdl</type>
> </dependency>
> ...
> </project>
> {code}
> {{HelloConsumer}} would then use the {{maven-dependency-plugin}} together with the {{cxf-codegen-plugin}} to copy the wsdl locally and generate the necessary web service stubs.
> If you then do {{mvn dependency:tree}} on {{HelloConsumer}}, you would expect to see only {{HelloService}}, not spring, because {{HelloService}} and {{HelloConsumer}} are isolated from each other by the web service transport layer, most often http. *However, maven currently includes spring transitively*, which is wrong.
--
This message was sent by Atlassian JIRA
(v6.1.6#6162)