So I finally took the time to extract that part in a seperate plugin.

I also put in a little sample.

http://projects.emesit.de/projects/gradle-eclipselinkprojects/wiki



Am 17.06.2011 15:38, schrieb James Carr:
Is your plugin published somewhere?

On Thu, Jun 16, 2011 at 4:55 PM, Ruediger Schobbert
<[email protected]>  wrote:
The referencedProjects doesn't help (at least it didn't help me). I tried
that and I ended up with a 'project' element in the 'projects' element in
the .project file. And it seemed to me that eclipse doesn't care about that
(Or maybe I did something wrong).

I tried by using 'withXml' but couldn't figure out how to use it, therefore
I implemented some hack as part of my personal plugin (where I set my
download and upload repositories, and do some other stuff common for all my
projects).

I use standard groovy XmlSlurper to parse .classpath file, remove the
corresponding jar files of the linked projects, and add the project
reference just after the last src entry.

All I need is (before any apply plugin) a property in my build file:
eclipseLinkToProjects = ['ProjectA', 'ProjectB']

And of course these projects must be present in my eclipse.

Note that I also set all classpath entries exported=false in my code, but
that is just a personal preference.


Here is the relevant code from my plugin (as I am quite new to groovy
there's probably a lot which could be written groovier):

if (project.hasProperty('eclipseLinkToProjects')) {
    project.eclipseClasspath {
        whenConfigured { classpath ->
            classpath.entries.removeAll { entry ->
                for (nextLinkedProject in eclipseLinkToProjects) {
                    if (entry.path ==~ ".*/$nextLinkedProject-.*(.jar|.zip)")
{ return true }
                }
            }
            classpath.entries.findAll { entry ->  entry.kind == 'lib' ||
entry.kind == 'con' }*.exported = false
        }
    }

    project.eclipseClasspath.doLast {
        def cpfile = new File('.classpath')
        def root = new XmlSlurper().parse(cpfile)
        def cpEntries = root.classpathentry

        def indexOfSrc = cpEntries.list().reverse().findIndexOf {
it.attributes()['kind'] == 'src' }
        def pos = cpEntries.size() - indexOfSrc - 1

        root.classpathentry[pos] + {
            for (nextLinkedProject in eclipseLinkToProjects) {
                classpathentry(combineaccessrules:'false', kind:'src',
path:"/$nextLinkedProject")
            }
        }
        cpfile.write(XmlUtil.serialize(new StreamingMarkupBuilder().bind {
mkp.yield root }))
    }
}



Hope that helps a little,
Ruediger.





Am 16.06.2011 21:05, schrieb Szczepan Faber:

Would referencedProjects from

http://gradle.org/current/docs/dsl/org.gradle.plugins.ide.eclipse.GenerateEclipseProject.html
help somehow?

If not, then you can always hook up to the xml generation of the
.project file using 'withXml'

Cheers!

On Thu, Jun 16, 2011 at 6:00 PM, James Carr<[email protected]>
  wrote:

Is there anyway to hook into the eclipse plug-in and have it reference
other projects in the workspace if they are present?

Thanks,
James

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email







---------------------------------------------------------------------
To unsubscribe from this list, please visit:

   http://xircles.codehaus.org/manage_email




---------------------------------------------------------------------
To unsubscribe from this list, please visit:

     http://xircles.codehaus.org/manage_email



---------------------------------------------------------------------
To unsubscribe from this list, please visit:

   http://xircles.codehaus.org/manage_email


Reply via email to