我已经用Xtext 2.12编写了DSL,而我的Xtend 2.12代码生成器由此生成了Java 8代码。我正在使用Eclipse Oxygen.3a。我首先创建了一个作为Eclipse插件的Xtext项目,并且一切正常,但是我现在想让Gradle构建一切。
为此,我将Gradle性质添加到了Xtext项目中,并启动了“gradle init”以生成build.gradle和settings.gradle文件。我发现了Xtext Gradle插件(Xtext Builder和Xtend Compiler)的存在,并使用这些插件的文档编写了build.gradle脚本内容,但是我并不了解所有内容,不足为奇的是,我的构建器无法正常工作。您能帮我正确设置此生成器吗?
plugins {
id 'org.xtext.builder' version '2.0.3'
id "org.xtext.xtend" version "2.0.3"
}
apply plugin: 'java'
apply plugin: 'org.xtext.xtend'
apply plugin: 'eclipse'
sourceSets {
main.java.srcDirs = ['src','xtend-gen']
main.xtendOutputDir = 'xtend-gen'
}
repositories {
mavenCentral()
jcenter()
}
dependencies {
compile group: 'org.eclipse.xtend', name: 'org.eclipse.xtend.lib', version: '2.16.0'
compile group: 'org.eclipse.xtext', name: 'org.eclipse.xtext', version: '2.16.0'
compile group: 'org.eclipse.emf', name: 'org.eclipse.emf.codegen.ecore', version: '2.15.0'
compile group: 'org.eclipse.xtext', name: 'org.eclipse.xtext.xtext.generator', version: '2.16.0'
testCompile group: 'org.eclipse.xtext', name: 'org.eclipse.xtext.xbase.testing', version: '2.16.0'
}
xtext {
languages {
mapy {
setup = 'com.mchp.mapy.MapyStandaloneSetup'
generator.outlet.producesJava = true
}
}
sourceSets {
main {
srcDirs 'src','xtend-gen'
output {
dir(xtext.languages.mapy.generator.outlet, 'src-gen')
}
}
}
}
xtend {
}
xtext块)?
然后是代码生成器?
以下是我的Eclipse项目组织的快照。
在此先感谢您的时间!
最佳答案
也可以使用Eclipse PDE构建Xtext插件。我创建了一个专用的Eclipse部署来减小规模(最小化然后安装PDE,JDT和Xtext项目),并将其发布到 Artifact 存储库中。然后,只需编写Gradle任务(或插件)以拉下Eclipse,将其提取到构建目录,在Xtext Eclipse项目中进行复制(在复制之前使用Xtext Gradle插件来构建DSL)并最终调用在Eclipse中使用Java命令和AntRunner的Ant PDE任务。输出应该是一个基本的更新站点,您可以从该站点在本地安装插件,也可以发布到Artifact存储库以进行共享。
需要对Eclipse PDE构建过程有充分的了解。我在“插件开发环境指南>任务> PDE Build”部分下的Eclipse帮助(https://help.eclipse.org/2020-06/index.jsp)中找到了所需的大部分内容。
在Xtext版本升级期间,我遇到了一些问题,其中包含各种依赖性冲突和Eclipse错误。通常可以在Xtext开发团队的帮助下解决这些问题,然后在Gradle中强制使用某些依赖项。
不幸的是,我无法共享任何构建版本,因为它是专有代码,但是我希望上面的解释对需要自动化该过程的任何人都足够。当然,这并不是一件容易的事情。