WSDL dependencies should not be transitive
------------------------------------------
Key: MNG-4770
URL: http://jira.codehaus.org/browse/MNG-4770
Project: Maven 2 & 3
Issue Type: Bug
Components: Dependencies
Affects Versions: 2.2.x (to be reviewed)
Reporter: Ove Gram Nipen
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 is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira