Gradle + Eclipse plugin: Add AspectJ nature into projects

I have found nice script for adding AspectJ nature into Eclipse project using Gradle. See https://github.com/breskeby/gradleplugins/blob/0.9-upgrade/aspectjPlugin/aspectJ.gradle#L29 . Unfortunately each run of ‘gradle eclipse’ adds new nodes into project XML. Here is my fix of that issue:

eclipse.project.file.withXml { xmlProvider-> 
    def projectDescription = xmlProvider.asNode() 
    def xmlparser = new XmlParser() 
    def builders = projectDescription.buildSpec[0] 
    
    if (!builders.buildCommand.any {it.name[0].value()=='org.eclipse.ajdt.core.ajbuilder'}) {
        def ajbuilder = xmlparser.createNode(builders, 'buildCommand', [:])
        
        xmlparser
            .createNode(ajbuilder, 'name', [:])
            .setValue('org.eclipse.ajdt.core.ajbuilder') 

        xmlparser.createNode(ajbuilder, 'arguments', [:]);
    } 
        
    def natures = projectDescription.natures[0] 
    
    if (!natures.nature.any {it.value()=='org.eclipse.ajdt.ui.ajnature'}) { 
        def ajnature = xmlparser.createNode(null, 'nature', [:]) 
        ajnature.setValue('org.eclipse.ajdt.ui.ajnature'); 
        natures.children().add(0, ajnature) 
    } 
} 

Then all nodes are created only once.

Tags:  Gradle  Java  Eclipse 
Last blog articles:
Mým fuckupům
Ubuntu: Login loop
Leaving LinkedIn
LinkedIn: Odcházení
git gui: Add pull and stash commands

Tags:
Java Ubuntu česky Gradle personal Software-architecture DIY children React Eclipse DisplayLink AI Spring JavaScript AspectJ neuron SSH LXC JavaFX Immutables Gnome3 GIT FatJar Edison technologies startup science procrastination pokusy podnikání linux lambda kvas ellipsis destilace chemie alkohol VisualVM Upstart Tomcat Selenium REST PrimeFaces Log4j Jooq Jackson JSF Debug DI CSS

Last tweets: