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:
Leaving LinkedIn
LinkedIn: Odcházení
git gui: Add pull and stash commands
Bosch Silence Plus + code E24
Using LXC virtualization for testing server installation

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

Last tweets: