generateLexer/generateParser gradle tasks problem in intellij idea plugin build

Answered

I try to extend some old IntelliJ plug-in And there is my build.gradle

buildscript {
    ext.kotlin_version = '1.6.0'

    repositories {
        mavenCentral()
        maven { url 'https://jitpack.io'}
        maven {
            url "https://oss.sonatype.org/content/repositories/snapshots/"
        }
        maven {
            url 'https://dl.bintray.com/jetbrains/intellij-plugin-service'
        }
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }

    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

plugins {
    id "org.jetbrains.intellij" version "0.5.0"
    id "org.jetbrains.grammarkit" version "2022.3"

}

group 'com.interfaced'
version '0.2.7'

apply plugin: 'kotlin'
apply plugin: 'org.jetbrains.intellij'

sourceSets {
    all {
        java.srcDirs += ['src/main/gen']
        kotlin.srcDirs += ['src/main/kotlin']
        resources.srcDirs = ['src/main/resources']
    }
}


grammarKit {
    jflexRelease = '1.7.0-2'
}

repositories {
    mavenCentral()
    maven {
        url "https://packages.jetbrains.team/maven/p/ij/intellij-dependencies/"
    }
}

dependencies {
    // https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib
    implementation group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib', version: '1.7.22'


    implementation group: 'junit', name: 'junit', version: '4.12'
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7"

}

intellij {

    pluginName 'BrightScript'

    version '2022.3'

}

patchPluginXml {
    changeNotes """
      <ul>
        <li>Support for 2020.2</li>
      </ul>
      """
}


import org.jetbrains.grammarkit.tasks.*

def GENERATE_GROUP = 'Generate'

task generateLexer(type: GenerateLexer) {
    source = "src/main/grammar/BrightScript.flex"
    targetDir = "src/main/gen/com/interfaced/brs/lang/lexer"
    targetClass = "_BrsLexer"
    skeleton = "src/main/grammar/idea-flex.skeleton"
    purgeOldFiles = true

    description = 'Generate Lexer Java sources for BrightScript'
    group = GENERATE_GROUP
}

task generateParser(type: GenerateParser) {
    source = "src/main/grammar/BrightScript.bnf"
    targetRoot = 'src/main/gen'
    pathToParser = 'src/main/gen/com/interfaced/brs/lang/BrsParser.java'
    pathToPsiRoot = 'src/main/gen/com/interfaced/brs/lang/psi'
    purgeOldFiles = true

    description = 'Generate Parser Java sources for BrightScript'
    group = GENERATE_GROUP

    // patch up to date check
    outputs.upToDateWhen { false }
}

compileKotlin {
    kotlinOptions.jvmTarget = "17"
}

compileKotlin.dependsOn(generateLexer, generateParser)

 

When I try to run it have the following output

org.gradle.api.GradleScriptException: A problem occurred evaluating root project 'brs-plugin'. at ... Caused by: groovy.lang.MissingPropertyException: Could not get unknown property 'GenerateLexer' for root project 'brs-plugin' of type org.gradle.api.Project.

 

But when I try to change my buildLexer/buildParser tasks as following

generateLexer {
    source = "src/main/grammar/BrightScript.flex"
    targetDir = "src/main/gen/com/interfaced/brs/lang/lexer"
    targetClass = "_BrsLexer"
    skeleton = "src/main/grammar/idea-flex.skeleton"
    purgeOldFiles = true

    description = 'Generate Lexer Java sources for BrightScript'
    group = GENERATE_GROUP
}

generateParser {
    source = "src/main/grammar/BrightScript.bnf"
    targetRoot = 'src/main/gen'
    pathToParser = 'src/main/gen/com/interfaced/brs/lang/BrsParser.java'
    pathToPsiRoot = 'src/main/gen/com/interfaced/brs/lang/psi'
    purgeOldFiles = true

    description = 'Generate Parser Java sources for BrightScript'
    group = GENERATE_GROUP

    // patch up to date check
    outputs.upToDateWhen { false }
}


have another one problem

A problem occurred evaluating root project 'brs-plugin'. ... Caused by: java.lang.IllegalArgumentException: Cannot set the value of task ':generateLexer' property 'skeleton' of type org.gradle.api.file.RegularFile

How to fix my problem? Regards
0
4 comments

This might be solved by updating all the items below. if it still doesn't work, please post link to full repository to reproduce.

 

This repository might not be needed:

 url 'https://jitpack.io'}

Remove this old and non-working repository:

https://dl.bintray.com/jetbrains/intellij-plugin-service

Do not use this, but https://cache-redirector.jetbrains.com/intellij-dependencies instead:

 url "https://packages.jetbrains.team/maven/p/ij/intellij-dependencies/"

 

Please upgrade this to recent version 1.10.1 and keep it up-to-date always:

id "org.jetbrains.intellij" version "0.5.0"
0

I have updated my gradle.build as listed below and have the same problem. Maybe there is some workaround to fix?

Maybe moving my project to maven can help, or it will be the same problem?

 

Build file 'C:\Users\vkozh\Documents\projects\brightscript-jetbrains-plugin\build.gradle' line: 71

A problem occurred evaluating root project 'brs-plugin'.
> Could not get unknown property 'GenerateLexer' for root project 'brs-plugin' of type org.gradle.api.Project.

 

 

buildscript {
ext.kotlin_version = '1.6.0'

repositories {
mavenCentral()

maven {
url "https://oss.sonatype.org/content/repositories/snapshots/"
}

maven {
url "https://plugins.gradle.org/m2/"
}
}

dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}

plugins {
id "org.jetbrains.intellij" version "1.10.1"
id "org.jetbrains.grammarkit" version "2022.3"

}

group 'com.interfaced'
version '0.2.7'

apply plugin: 'kotlin'
apply plugin: 'org.jetbrains.intellij'

sourceSets {
all {
java.srcDirs += ['src/main/gen']
kotlin.srcDirs += ['src/main/kotlin']
resources.srcDirs = ['src/main/resources']
}
}


grammarKit {
jflexRelease = '1.7.0-2'
}

repositories {
mavenCentral()
maven {
url "https://cache-redirector.jetbrains.com/intellij-dependencies"
}
}

dependencies {
// https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib
implementation group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib', version: '1.7.22'


implementation group: 'junit', name: 'junit', version: '4.12'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7"

}

intellij {
version '2022.3'
}

import org.jetbrains.grammarkit.tasks.*

def GENERATE_GROUP = 'Generate'

task generateLexer(type: GenerateLexer) {
source = "src/main/grammar/BrightScript.flex"
targetDir = "src/main/gen/com/interfaced/brs/lang/lexer"
targetClass = "_BrsLexer"
skeleton = "src/main/grammar/idea-flex.skeleton"
purgeOldFiles = true

description = 'Generate Lexer Java sources for BrightScript'
group = GENERATE_GROUP
}

task generateParser(type: GenerateParser) {
source = "src/main/grammar/BrightScript.bnf"
targetRoot = 'src/main/gen'
pathToParser = 'src/main/gen/com/interfaced/brs/lang/BrsParser.java'
pathToPsiRoot = 'src/main/gen/com/interfaced/brs/lang/psi'
purgeOldFiles = true

description = 'Generate Parser Java sources for BrightScript'
group = GENERATE_GROUP

// patch up to date check
outputs.upToDateWhen { false }
}

compileKotlin {
kotlinOptions.jvmTarget = "17"
}

compileKotlin.dependsOn(generateLexer, generateParser)
0

Sorry for delay. Your build script seems to miss imports for GenerateLexer and GenerateParser. See https://github.com/google/bamboo-soy/blob/master/build.gradle#L101 for sample

0

Please sign in to leave a comment.