0

我通过使用定义到 *.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();
}}
4

2 回答 2

2

尝试这样的事情:

[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 中导出包

祝你好运!

于 2014-10-04T08:22:25.653 回答
0

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

于 2014-10-03T11:20:30.083 回答