更新 Gradle 6 的 XText 版本时出错
Error when updating XText versions for Gradle 6
我正在尝试将 EMF/XCore 项目更新到较新的版本以绕过版本控制障碍。目前,容纳该项目的存储库必须以 Gradle 4 和 Bndtools 4.3 为目标,因为在以较新版本为目标时会出现问题。我欣然承认这里的一个问题是我对 XText、XCore 和其他方面缺乏了解。现在我发现自己在一台无法访问 Java 8 的机器上,这迫使我尽可能尝试更新项目设置。
该项目的最后一个安全目标是 XText 2.16.0
和 org.xtext.builder 版本 1.0.21
。我能找到的例子大部分都匹配这个项目的设置。
所以现在,尝试 运行 在 Gradle 6.3
环境中使用 OpenJDK 13
(如果 Java 版本是问题所在改变了)...
备注
- 一些更改是基于研究我的构建问题的解决方案并添加了一些评论
${mavenURL}
当前指向 Maven Central
- 我根据 XText 的发行说明添加了
compile platform()
行。它似乎对这个问题没有帮助,但
- 我更改了版本号以匹配 Maven BOM 中的版本号
- 我尝试了多种组合,包括更改
org.xtext.builder
版本以及同时针对 EMF 2.21 和 2.20
- 我试过较低版本的 XText。
2.17.0
因其他问题而失败
build.gradle
:
plugins {
id 'org.xtext.builder' version '2.0.8'
id 'java' // Helpful? Doesn't appear so
}
repositories {
maven() {
url "${mavenURL}"
}
}
ext.xtextVersion = "2.21.0"
ext.emfVersion = "2.20.0"
dependencies {
compile platform("org.eclipse.xtext:xtext-dev-bom:${xtextVersion}")
xtextLanguages 'org.eclipse.emf:org.eclipse.emf.codegen.ecore.xtext:1.4.0'
xtextLanguages('org.eclipse.emf:org.eclipse.emf.ecore.xcore:1.12.0') {
exclude group: 'org.antlr', module: 'antlr-runtime'
}
xtextLanguages "org.eclipse.xtext:org.eclipse.xtext.ecore:${xtextVersion}"
xtextLanguages "org.eclipse.xtext:org.eclipse.xtext.xbase.lib:${xtextVersion}"
xtextLanguages 'org.eclipse.emf:org.eclipse.emf.codegen:2.19.0'
xtextLanguages 'org.eclipse.emf:org.eclipse.emf.codegen.ecore:${emfVersion}'
xtextLanguages 'org.eclipse.emf:org.eclipse.emf.mwe2.runtime:2.11.2'
compile "org.eclipse.xtext:org.eclipse.xtext:${xtextVersion}"
compile "org.eclipse.xtext:org.eclipse.xtext.xbase:${xtextVersion}"
compile 'org.eclipse.emf:org.eclipse.emf.ecore.xcore.lib:1.4.0'
}
xtext {
version = "${xtextVersion}"
languages {
ecore {
setup = 'org.eclipse.xtext.ecore.EcoreSupport'
}
codegen {
setup = 'org.eclipse.emf.codegen.ecore.xtext.GenModelSupport'
}
xcore {
setup = 'org.eclipse.emf.ecore.xcore.XcoreStandaloneSetup'
generator.outlet.producesJava = true
// Have also tried generator.javaSourceLevel = '1.8'
}
}
sourceSets {
main {
srcDir 'model'
// Move the generated Xcore output to the src directory
output {
dir(xtext.languages.xcore.generator.outlet, 'src-gen')
}
}
}
}
多次尝试最终导致以下错误:
> ./gradlew jar
...
> Task :com.example.project:generateXtext FAILED
ERROR:A generic type in this context must refer to a classifier or a type parameter (file:...file.xcore)
...
> Xtext validation failed, see build log for details.
多行。 XCore 文件看起来像这样
@GenModel(
complianceLevel="8.0",
loadInitialization="false",
modelDirectory="com.example.project/src-gen",
bundleManifest="false",
updateClasspath="false",
oSGiCompatible="true",
forceOverwrite="true")
@Ecore(
nsPrefix="query",
nsURI="something"
)
// These lines had to be added to resolve the above annotations no longer working
annotation "http://www.eclipse.org/emf/2002/GenModel" as GenModel
annotation "http://www.eclipse.org/emf/2002/Ecore" as Ecore
interface Node wraps an.external.Node {}
abstract class ENode extends Node
{
op Object getParent() // This line fails due to not referring to object or classifier
{
eContainer
}
}
我在 XText 站点的错误报告中看到了这个错误弹出(例如 https://github.com/eclipse/xtext-maven/issues/71), and they were resolved. But generally the projects reference Github examples such as https://github.com/itemis/itemis-blog/tree/xcore_gradle or https://github.com/ghillairet/xcore-gradle-example,它们都指向 XText 的版本和相应的构建器,它们在这次升级尝试之前确实在工作。
该项目是一个 XText 项目。 .project
文件的相关部分在这里:
<buildSpec>
<buildCommand>
<name>bndtools.core.bndbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>bndtools.core.bndnature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
</natures>
如有任何帮助,我们将不胜感激。
我通过 https://github.com/xtext/xtext-gradle-plugin/issues/171 获得了 XText Gradle 插件开发人员的帮助。
最大的问题是 src-gen
在执行 generateXText
任务之前不能存在于类路径中。为帮助进行此更新,建议执行 clean
任务以删除 src-gen
文件夹。此外,第二个 3 compile
个依赖项应该是 xtextLanguages
个依赖项。
我正在尝试将 EMF/XCore 项目更新到较新的版本以绕过版本控制障碍。目前,容纳该项目的存储库必须以 Gradle 4 和 Bndtools 4.3 为目标,因为在以较新版本为目标时会出现问题。我欣然承认这里的一个问题是我对 XText、XCore 和其他方面缺乏了解。现在我发现自己在一台无法访问 Java 8 的机器上,这迫使我尽可能尝试更新项目设置。
该项目的最后一个安全目标是 XText 2.16.0
和 org.xtext.builder 版本 1.0.21
。我能找到的例子大部分都匹配这个项目的设置。
所以现在,尝试 运行 在 Gradle 6.3
环境中使用 OpenJDK 13
(如果 Java 版本是问题所在改变了)...
备注
- 一些更改是基于研究我的构建问题的解决方案并添加了一些评论
${mavenURL}
当前指向 Maven Central- 我根据 XText 的发行说明添加了
compile platform()
行。它似乎对这个问题没有帮助,但 - 我更改了版本号以匹配 Maven BOM 中的版本号
- 我尝试了多种组合,包括更改
org.xtext.builder
版本以及同时针对 EMF 2.21 和 2.20 - 我试过较低版本的 XText。
2.17.0
因其他问题而失败
build.gradle
:
plugins {
id 'org.xtext.builder' version '2.0.8'
id 'java' // Helpful? Doesn't appear so
}
repositories {
maven() {
url "${mavenURL}"
}
}
ext.xtextVersion = "2.21.0"
ext.emfVersion = "2.20.0"
dependencies {
compile platform("org.eclipse.xtext:xtext-dev-bom:${xtextVersion}")
xtextLanguages 'org.eclipse.emf:org.eclipse.emf.codegen.ecore.xtext:1.4.0'
xtextLanguages('org.eclipse.emf:org.eclipse.emf.ecore.xcore:1.12.0') {
exclude group: 'org.antlr', module: 'antlr-runtime'
}
xtextLanguages "org.eclipse.xtext:org.eclipse.xtext.ecore:${xtextVersion}"
xtextLanguages "org.eclipse.xtext:org.eclipse.xtext.xbase.lib:${xtextVersion}"
xtextLanguages 'org.eclipse.emf:org.eclipse.emf.codegen:2.19.0'
xtextLanguages 'org.eclipse.emf:org.eclipse.emf.codegen.ecore:${emfVersion}'
xtextLanguages 'org.eclipse.emf:org.eclipse.emf.mwe2.runtime:2.11.2'
compile "org.eclipse.xtext:org.eclipse.xtext:${xtextVersion}"
compile "org.eclipse.xtext:org.eclipse.xtext.xbase:${xtextVersion}"
compile 'org.eclipse.emf:org.eclipse.emf.ecore.xcore.lib:1.4.0'
}
xtext {
version = "${xtextVersion}"
languages {
ecore {
setup = 'org.eclipse.xtext.ecore.EcoreSupport'
}
codegen {
setup = 'org.eclipse.emf.codegen.ecore.xtext.GenModelSupport'
}
xcore {
setup = 'org.eclipse.emf.ecore.xcore.XcoreStandaloneSetup'
generator.outlet.producesJava = true
// Have also tried generator.javaSourceLevel = '1.8'
}
}
sourceSets {
main {
srcDir 'model'
// Move the generated Xcore output to the src directory
output {
dir(xtext.languages.xcore.generator.outlet, 'src-gen')
}
}
}
}
多次尝试最终导致以下错误:
> ./gradlew jar
...
> Task :com.example.project:generateXtext FAILED
ERROR:A generic type in this context must refer to a classifier or a type parameter (file:...file.xcore)
...
> Xtext validation failed, see build log for details.
多行。 XCore 文件看起来像这样
@GenModel(
complianceLevel="8.0",
loadInitialization="false",
modelDirectory="com.example.project/src-gen",
bundleManifest="false",
updateClasspath="false",
oSGiCompatible="true",
forceOverwrite="true")
@Ecore(
nsPrefix="query",
nsURI="something"
)
// These lines had to be added to resolve the above annotations no longer working
annotation "http://www.eclipse.org/emf/2002/GenModel" as GenModel
annotation "http://www.eclipse.org/emf/2002/Ecore" as Ecore
interface Node wraps an.external.Node {}
abstract class ENode extends Node
{
op Object getParent() // This line fails due to not referring to object or classifier
{
eContainer
}
}
我在 XText 站点的错误报告中看到了这个错误弹出(例如 https://github.com/eclipse/xtext-maven/issues/71), and they were resolved. But generally the projects reference Github examples such as https://github.com/itemis/itemis-blog/tree/xcore_gradle or https://github.com/ghillairet/xcore-gradle-example,它们都指向 XText 的版本和相应的构建器,它们在这次升级尝试之前确实在工作。
该项目是一个 XText 项目。 .project
文件的相关部分在这里:
<buildSpec>
<buildCommand>
<name>bndtools.core.bndbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>bndtools.core.bndnature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
</natures>
如有任何帮助,我们将不胜感激。
我通过 https://github.com/xtext/xtext-gradle-plugin/issues/171 获得了 XText Gradle 插件开发人员的帮助。
最大的问题是 src-gen
在执行 generateXText
任务之前不能存在于类路径中。为帮助进行此更新,建议执行 clean
任务以删除 src-gen
文件夹。此外,第二个 3 compile
个依赖项应该是 xtextLanguages
个依赖项。