3

我需要使用 maven 项目从 jet 模板生成 java 代码,它应该在 eclipse 环境之外完成,但到目前为止我还没有弄清楚如何做到这一点。

我正在使用 maven 3x 和 jet 1.1.x。

我尝试了几种方法,但似乎都没有奏效:

  • 调用库 org.eclipse.emf.codegen.jet.JETCompiler。这个库似乎与 eclipse 的环境有很强的依赖关系,因此它失败了。
  • maven 的 jet 插件之一也不起作用,我使用的是官方网站 ([tikal-maven-jet-plugin][1]) 中提供的相同示例,如下所示:

    http://network.tikalk.com/release/tikal-maven-jet-plugin/usage.html

有谁知道如何做到这一点?

非常感谢,卡洛斯

4

2 回答 2

2

由于 JET 的工作方式,它实际上只能在 eclipse 环境中运行。但是,实际上可以无头启动 eclipse 以运行 ant 构建脚本,因此您可以在没有 UI 的情况下运行所需的 eclipse 部分。为此,您需要启动 org.eclipse.ant.core.antRunner 应用程序。这里有一些关于如何做到这一点的文档:http: //help.eclipse.org/juno/index.jsp?topic= %2Forg.eclipse.platform.doc.user%2Ftasks%2FantRunner.htm

启动 antRunner 应用程序后,您可以使用 JET ant 任务编译模板并运行转换:http://help.eclipse.org/helios/index.jsp?topic=%2Forg.eclipse.jet。 doc%2Freferences%2Fant%2FantTasks.xhtml

如果您正在无头编译 Eclipse 插件,则有一些关于无头模板编译的重要警告,记录在这里:http ://wiki.eclipse.org/JET_FAQ_How_to_I_compile_JET_templates_in_a_headless_build

我不确定这与 Maven 的集成程度如何,但这似乎是 ant 的最佳方法。如果您想从 Java 运行转换,这里有一些信息:http: //wiki.eclipse.org/JET_FAQ_How_do_I_run_a_JET_transformation_from_Java%3F。不过,您仍然需要在 Eclipse 环境中才能正常工作。

于 2012-07-27T13:47:46.787 回答
0

tikal-maven-jet-plugin 为我工作。

这是我在 中使用的 JET 文件示例src/main/templates/generator.jet,我不使用 EMF 类,只使用标准 Map。

<%@ jet class="TableModelGenerator" package="net.trajano.framework.tool" %>
<% java.util.Map meta = (java.util.Map)argument; %> 
package <%=meta.get("PackageName")%>;
public class <%=meta.get("ClassName")%> {
}

我使用的插件配置是

<plugin>
    <groupId>com.tikal</groupId>
    <artifactId>tikal-maven-jet-plugin</artifactId>
    <version>0.4.0</version>
    <executions>
        <execution>
            <phase>generate-sources</phase>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <includeTemplates>
            <include>**/*.jet</include>
        </includeTemplates>
    </configuration>
</plugin>
于 2014-07-21T10:49:47.000 回答