【问题标题】:Acceleo M2T - Write timestamp into a generated fileAcceleo M2T - 将时间戳写入生成的文件
【发布时间】:2014-10-17 15:29:28
【问题描述】:

我正在使用定义到 *.mtl 文件中的不同 Acceleo 模板生成一些文件。

在这些文件的顶部,我需要编写如下内容:

#-----------------------------------------------------------------------------
# Project automatically generated by XXX at (add timestamp here)
#-----------------------------------------------------------------------------

如何在每次生成文件时动态生成此时间戳?

谢谢!

编辑:我解决了这个问题,如下所述。

module 声明之后,添加 query 声明:

[module generate('platform:/resource/qt48_model/qt48_xmlschema.xsd') ]
[comment get timestamp/]
[query public getCurrentTime(c : OclAny) : String =
invoke('org.eclipse.acceleo.qt_test_api.generator.common.GenerationSupport', 'getCurrentTime()', Sequence{}) /]

然后,创建一个名为GenerationSupport 的类并添加一个名为getCurrentTime() 的方法:

package org.eclipse.acceleo.qt_test_api.generator.common;

import java.sql.Timestamp;

public class GenerationSupport {

public String getCurrentTime(){
    java.util.Date date = new java.util.Date();
    Timestamp ts = new Timestamp(date.getTime());
    return ts.toString();
}}

【问题讨论】:

    标签: eclipse acceleo ocl ecore


    【解决方案1】:

    试试这样的:

    [query public getCurrentTime(traceabilityContext : OclAny): 
        String = invoke('yourPackage.YourJavaClass', 'getCurrentTime()', Sequence{})
    /]
    

    在您的 Java 类中,声明一个具有此功能的方法:

    public String getCurrentTime(){
      return customDate;
    }
    

    其中“customDate”应该是您自定义格式的字符串: new Date().toString(),使用格式 mm/dd/yyyy 或任何你想要的。

    请不要忘记添加包含此 Java 类的包以在 MANIFEST.MF 中导出包

    祝你好运!

    【讨论】:

    • 万一有人正在寻找快速解决方案:String = invoke('java.util.Date', 'toString()', Sequence{})
    【解决方案2】:

    您必须使用所谓的“服务”。 它基本上只是一个类中的公共方法,它将日期作为字符串返回,按照您想要的方式格式化。 查看 acceleo 教程,了解如何使用服务,一切都在那里。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-19
      • 2020-03-24
      • 2020-10-25
      • 2019-09-04
      • 2014-12-19
      • 2013-10-09
      • 2019-03-14
      • 2017-09-13
      相关资源
      最近更新 更多