0

当我创建一个 Xtext 语言服务器时,我可以构建它并获得一个 .jar 文件。谈到 Antlr,我如何生成一个包含所有依赖项的二进制文件?

我在 Eclipse 中创建了一个 Antlr 项目,是生成的文件结构。我曾经使用 Xtext 和 Gradle 创建了一个 DSL,当我构建 shadowJar 时,我在*.ide/build/libs目录中创建了一个 .jar 文件。

我的问题是,我如何构建一个类似的 .jar 或任何包含来自我的新 Antlr 项目的所有依赖项的文件?这是一个ANTLR项目,而不是 Xtext。

我可以简单地将 gradle.build 编译并粘贴到 antlr 项目目录中吗?我使用了从教程中提取的以下 build.gradle 代码:-

buildscript {
    repositories {
        maven {
            name 'JFrog OSS snapshot repo'
            url  'https://oss.jfrog.org/oss-snapshot-local/'
        }
        jcenter()
    }
    dependencies {
        classpath 'me.champeau.gradle:antlr4-gradle-plugin:0.1.1-SNAPSHOT'
    }
}
repositories {
    mavenCentral()
    jcenter()
}
apply plugin: 'java'
apply plugin: 'me.champeau.gradle.antlr4'
antlr4 {
    source = file('src/main/antlr')
    output = file('build/generated-src/me/tomassetti/pythonast/parser')
    extraArgs = ['-package', 'me.tomassetti.pythonast.parser']
}
compileJava.dependsOn antlr4
sourceSets.main.java.srcDirs += antlr4.output
configurations {
    compile.extendsFrom antlr4
}
task fatJar(type: Jar) {
    manifest {
        attributes 'Implementation-Title': 'Python-Parser',
                   'Implementation-Version': '0.0.1'
    }
    baseName = project.name + '-all'
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
}

并构建了一个 .jar 文件。但是当我尝试在 eclipse che 中使用 in 作为语言服务器时,出现超时错误。这是我完整目录的 Git 存储库: https ://github.com/SharkJ/AntlrProject

4

1 回答 1

0

使用新建 Xtext 项目向导。它有选项

  • 使用 maven 或 gradle 创建 ls
  • 在 fat jar 或具有启动脚本样式的应用程序中

如果您想将某些东西用作语言服务器,则实际上必须实现语言服务器。你可以通过使用 xtext 或者你必须使用https://github.com/eclipse/lsp4j实现你自己的版本来做到这一点

于 2018-10-11T06:59:08.680 回答