Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is Eclipse not attaching 3rd party libs source files to a WTP-faceted Gradle project?

Tags:

The sources are downloaded in the Gradle cache and the classpath-entries for the source files looks ok, but Eclipse does not show the source files for 3rd party libs.

<?xml version="1.0" encoding="UTF-8"?> <classpath>     <classpathentry kind="output" path="bin/main"/>     <classpathentry kind="src" path="src/main/java"/>     <classpathentry kind="src" path="src/main/resources"/>     <classpathentry output="bin/test" kind="src" path="src/test/java"/>     <classpathentry output="bin/test" kind="src" path="src/test/resources"/>     <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER" exported="true"/>     <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container" exported="true"/>     <classpathentry sourcepath="D:/Users/SSchneider/.gradle/caches/artifacts-14/filestore/org.springframework/spring-webmvc/3.1.2.RELEASE/source/bc9c347358c5d59998b27e8a13c75106c3d0696/spring-webmvc-3.1.2.RELEASE-sources.jar" kind="lib" path="D:/Users/SSchneider/.gradle/caches/artifacts-14/filestore/org.springframework/spring-webmvc/3.1.2.RELEASE/jar/e02f3e5aa91c8caa37b2e9b780229d27e76c0f2e/spring-webmvc-3.1.2.RELEASE.jar" exported="true">         <attributes>             <attribute name="org.eclipse.jst.component.nondependency" value=""/>         </attributes>     </classpathentry>     <classpathentry sourcepath="D:/Users/SSchneider/.gradle/caches/artifacts-14/filestore/org.springframework.data/spring-data-jpa/1.2.0.BUILD-SNAPSHOT/source/19e4dedbb956cdc3bb1d34d61a351229b653029a/spring-data-jpa-1.2.0.BUILD-SNAPSHOT-sources.jar" kind="lib" path="D:/Users/SSchneider/.gradle/caches/artifacts-14/filestore/org.springframework.data/spring-data-jpa/1.2.0.BUILD-SNAPSHOT/jar/2a3cfc2ea0b2c8d87f32166e16bb56e1f092568b/spring-data-jpa-1.2.0.BUILD-SNAPSHOT.jar" exported="true">         <attributes>             <attribute name="org.eclipse.jst.component.nondependency" value=""/>         </attributes>     </classpathentry>     <classpathentry sourcepath="D:/Users/SSchneider/.gradle/caches/artifacts-14/filestore/org.springframework.security/spring-security-web/3.1.2.RELEASE/source/49e8d929d835d4ba4556ba9d138488ecc083a794/spring-security-web-3.1.2.RELEASE-sources.jar" kind="lib" path="D:/Users/SSchneider/.gradle/caches/artifacts-14/filestore/org.springframework.security/spring-security-web/3.1.2.RELEASE/jar/e43e7683289f08c1e073564a94e6f26298ec4f59/spring-security-web-3.1.2.RELEASE.jar" exported="true">         <attributes>             <attribute name="org.eclipse.jst.component.nondependency" value=""/>         </attributes>     </classpathentry>     <classpathentry sourcepath="D:/Users/SSchneider/.gradle/caches/artifacts-14/filestore/javax.validation/validation-api/1.0.0.GA/source/7a561191db2203550fbfa40d534d4997624cd369/validation-api-1.0.0.GA-sources.jar" kind="lib" path="D:/Users/SSchneider/.gradle/caches/artifacts-14/filestore/javax.validation/validation-api/1.0.0.GA/jar/b6bd7f9d78f6fdaa3c37dae18a4bd298915f328e/validation-api-1.0.0.GA.jar" exported="true">         <attributes>             <attribute name="org.eclipse.jst.component.nondependency" value=""/>         </attributes>     </classpathentry>  </classpath> 
like image 301
Stephan Avatar asked Oct 11 '12 09:10

Stephan


People also ask

What does Gradlew Eclipse do?

with the command gradle eclipse or ./gradlew eclipse you can generate Eclipse project files. After generating the Eclipse project files, you can import the project into a Eclipse workspace.

What is Eclipse plugin in Gradle?

The Gradle eclipse plugin generates the required files that are used by Eclipse IDE. Therefore, it helps to create and import the project in Eclipse. The latest version of Eclipse IDE provides built-in support for Gradle.

How do I export a Gradle project in Eclipse?

Apparently, the current edition of the export-to-Gradle support in Eclipse cannot handle a project that is attached to an Android library project. In that case, you would need to (temporarily) detach the Android library project, export the main project, then modify build.


1 Answers

That's a weird behavior in Eclipse with the generated .classpath-file. Just put the 'Web App Libraries' entry at the bottom of your classpath file (-> Java Build Path -> Order and Export).

The best solution is to enhance your gradle.build file (then you don't need to reorder your build path each time you generate the classpath file via gradle):

... eclipse.classpath.file {     // Classpath entry for Eclipse which changes the order of classpathentries; otherwise no sources for 3rd party jars are shown     withXml { xml ->         def node = xml.asNode()         node.remove( node.find { it.@path == 'org.eclipse.jst.j2ee.internal.web.container' } )         node.appendNode( 'classpathentry', [ kind: 'con', path: 'org.eclipse.jst.j2ee.internal.web.container', exported: 'true'])     } } 
like image 200
Andreas Kuhrwahl Avatar answered Sep 30 '22 07:09

Andreas Kuhrwahl