Hi,

There is an inconsistency between the maven and OSGi dependencies. Maven supports transitive dependencies while OSGi doesn't. In this case, we have contribution-xml pulled in by maven as a (transitive) compile-time dependency. But there is no explicit Import-Package in the MANIFEST.MF that references any packages from contribution-xml OSGi bundle.

To avoid duplicate classpath entries, we generate the .classpath in such a way that the compile/provided dependencies are NOT list as entries in the .classpath and they will be automatically added by the PDE classpath container. You can find more details in the "PDE integration of tuscany modules" section on page [1].

One way to fix the problem is to add a "runtime" dependency for contribution-xml to "override" the transitive "compile" dependency.

[1] http://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/OSGi+Aware+Programming+in+Tuscany

Thanks,
Raymond

--------------------------------------------------
From: "ant elder" <[email protected]>
Sent: Sunday, March 01, 2009 11:47 PM
To: <[email protected]>
Subject: Re: [2.x] Failing unit tests due to classPath issues in Eclipse PDE platform

On Mon, Mar 2, 2009 at 6:45 AM, Luciano Resende <[email protected]> wrote:

I'm having issues with the assembly-xml unit tests, and I have
realized that the problem is that some necessary dependencies are
missing (e.g contribution-xml)...
Even though this dependency is in the pom.xml, it is not listed as
dependency in either the regular classpath or in the
plugin-dependencies.

Can someone please let me know if they are experiencing something
similar in the Eclipse PDE environment ?


This is the .classpath I get from running "mvn -Peclipse" in assembly-xml:

<classpath>
  <classpathentry kind="src" path="."
including="LICENSE|NOTICE|MANIFEST.MF" excluding="**/*.java"/>
  <classpathentry kind="src" path="src/main/java"/>
<classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/> <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
  <classpathentry kind="src" path="src/test/resources"
output="target/test-classes" excluding="**/*.java"/>
  <classpathentry kind="output" path="target/classes"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
  <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/4.5/junit-4.5.jar"/>
  <classpathentry kind="var"
path="M2_REPO/org/apache/tuscany/sca/tuscany-assembly-xsd/2.0-SNAPSHOT/tuscany-assembly-xsd-2.0-SNAPSHOT.jar"/>
  <classpathentry kind="var"
path="M2_REPO/org/apache/tuscany/sca/tuscany-definitions-xml/2.0-SNAPSHOT/tuscany-definitions-xml-2.0-SNAPSHOT.jar"/>
  <classpathentry kind="var"
path="M2_REPO/org/apache/tuscany/sca/tuscany-policy-xml/2.0-SNAPSHOT/tuscany-policy-xml-2.0-SNAPSHOT.jar"/>
  <classpathentry kind="var"
path="M2_REPO/org/codehaus/woodstox/wstx-asl/3.2.4/wstx-asl-3.2.4.jar"/>
</classpath>

so that does not include things like tuscany-contribution-xml which is
in the assembly-xml pom.xml which doesn't seem right

...ant

Reply via email to