首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven + MWE2Launcher + XText模型引用未编译的Java类

Maven + MWE2Launcher + XText模型引用未编译的Java类
EN

Stack Overflow用户
提问于 2018-12-05 17:26:01
回答 1查看 77关注 0票数 1

我有一个关于XText/Maven的问题。我有一个XText/Maven/Java项目。

在这个项目中有Xtext模型和Java源文件。一些模型文件引用了一些Java文件。例如:

型号:

代码语言:javascript
复制
package a.b.c

import java.util.List
import x.y.z.MyClass // <-- This is one of the Javafile in the same Project

dto MyModel
{
    MyClass myClass
}

Java:

代码语言:javascript
复制
package x.y.z;

public class MyClass
{
   String foo;
   String bar;
}

结构:

代码语言:javascript
复制
project
|
|----src/main
      |
      |---/java/x/y/z/MyClass.java
      |
      |---/model/a/b/c/MyModel.dto
      |
      |---/gen/a/b/c/MyModel.java <-- here goes the generated Javafile from the Model

我已经设法编写了一个Xtext/Eclipse插件,所以Eclipse构建生成了我的my文件,并很好地编译了Javafiles。

但是现在我尝试用Maven来构建这个项目。我已经通过使用类的mwe2工作流完成了生成过程

代码语言:javascript
复制
org.eclipse.emf.mwe2.launch.runtime.MWE2Launcher

和其他模型文件的生成率都很好,但是MyModel引用了一个尚未编译的Java Class,因此找不到它:

代码语言:javascript
复制
[ERROR] Execution Failed: Problems running workflow my.company.model.xtext.domainmodel.generator: Validation problems:
[ERROR] 49 errors:
[ERROR] MyModel.dto - <path>/model/a/b/c/MyModel.dto
[ERROR] 4: x.y.z.MyClass cannot be resolved to a type.
...

因此,错误本身是显而易见的。我试着先预编译Java文件,并将它们添加到类路径中。但是我有十几个这样的问题,我希望这是告诉Xtext/Mwe2Launcher它应该引用所需的Java文件的更好的方法。因为以某种神奇的方式,它已经在Eclipse中工作了,但我不知道它是如何工作的。

EN

回答 1

Stack Overflow用户

发布于 2019-12-26 16:28:28

我也有同样的问题。但我使用Gradle而不是Maven。然而,它可能对某些人仍然有用:

代码语言:javascript
复制
task precompile(type: JavaCompile) {
    source = 'src/main/java'
    classpath = sourceSets.main.compileClasspath
    destinationDir = sourceSets.main.java.outputDir
}

task generateXtextLanguage(type: JavaExec) {
    dependsOn precompile
    main = 'org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher'
    args += "src/main/mwe2/...your_path_here.../generate.mwe2"
    classpath = layout.files(configurations.mwe2, sourceSets.main.java.outputDir)
    inputs.file 'src/main/mwe2/...your_path_here.../generate.mwe2'
    inputs.dir 'src/main/xcore'
    outputs.dir 'target/generated-sources/xtext-gen'
}

我添加了precompile任务。generateXtextLanguage dependsOn it。另外,我将预编译类添加到类路径中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53628978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档