eclipsextextgradle-pluginxtendshadowjar

"Plugin with id 'org.xtext.xtend' not found." Error


I was building a language server following this tutorial https://www.eclipse.org/community/eclipse_newsletter/2017/may/article5.php

But, when I tried to build the shadowJar, I kept getting this error:

D:\leaf\org.xtext.example.mydsl1.parent>gradle shadowJar

FAILURE: Build failed with an exception.

* Where:
Build file 'D:\leaf\org.xtext.example.mydsl1.parent\build.gradle' line: 25

* What went wrong:
A problem occurred evaluating root project 'org.xtext.example.mydsl1.parent'.
> Plugin with id 'org.xtext.xtend' not found.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 0s

Below is my build.gradle file of the parent script

buildscript {
    repositories {
        jcenter()
    }
    plugins {
        id "org.xtext.xtend" version "2.0.1"
    }
    repositories {
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }   
    dependencies {
        classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.4'
        classpath "org.xtext:xtext-gradle-plugin:2.0.1"
    }
}

subprojects {
    ext.xtextVersion = '2.16.0-SNAPSHOT'
    repositories {
        jcenter()
        maven {
            url 'https://oss.sonatype.org/content/repositories/snapshots'
        }
    }

    apply plugin: 'java'
    apply plugin: 'org.xtext.xtend'
    apply plugin: 'com.github.johnrengelman.shadow'
    apply from: "${rootDir}/gradle/source-layout.gradle"
    apply from: "${rootDir}/gradle/maven-deployment.gradle"
    apply plugin: 'eclipse'

    group = 'org.xtext.example.mydsl1'
    version = '1.0.0-SNAPSHOT'

    sourceCompatibility = '1.8'
    targetCompatibility = '1.8'

    configurations.all {
        exclude group: 'asm'
    }
}

Solution

  • I created the project again and used the code that the wizard created. I selected the Language server build type as "Fat jar" since my goal was to create one. Apart from that, I added the basename, classifier, and version given in the tutorial to the auto-generated code. The shadowjar (in the build.gradle file of the .ide folder) was the only part of code that I changed. Thus, my shadowjar code looks like this:

    shadowJar {
        baseName = 'dsl-language-server'
        classifier = null
        version = null
        from(project.convention.getPlugin(JavaPluginConvention).sourceSets.main.output)
        configurations = [project.configurations.runtime]
        exclude('META-INF/INDEX.LIST', 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA','schema/*',
            '.options', '.api_description', '*.profile', '*.html', 'about.*', 'about_files/*',
            'plugin.xml', 'modeling32.png', 'systembundle.properties', 'profile.list')
        classifier = 'ls'
        append('plugin.properties')
    }
    

    Then I navigated to the parent folder of my project through Windows PowerShell and built it using the command "gradle shadowjar". It built fine! The built jar file can be found in /build/libs/ in the .ide directory.