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)