Как я могу выполнить один и тот же модуль более одного раза, но сохранить предыдущий сгенерированный файл кода?Acceleo Инкрементальная генерация в том же файле
Короче говоря, у меня есть основной модуль, который вызывает другие модули. generate.mtl
[comment encoding = UTF-8 /]
[module generate('http:///AndroidUI.ecore')/]
[import pje13::androidui::codegeneration::xml_generate /]
[import pje13::androidui::codegeneration::java_generate /]
[import pje13::androidui::codegeneration::xml_strings /]
[template public generate(app : Application)]
[comment @main /]
[for (page : Page | app.page)]
[for (activity : Activity | app.activity)]
[if (activity.name.contains(page.name.replace('activity_', '').toUpperFirst()))]
**[genPage(page, app.name, activity)/]**
[/if]
[/for]
[/for]
[comment] match between an activity and an layout is:
MainActivity.java == activity_main.xml [/comment]
[/template]
[template public **genPage**(element:Page, appName:String, activity : Activity)]
[GenerateJava(element,appName,activity)/]
**[GenerateStrings(element)/]**
[GenerateXML(element,activity)/]
[/template]
Если у меня есть более чем на одну страницу, шаблон [GenerateStrings(element)/]
будет называться более чем один раз. Поскольку выход консоль говорит
!ENTRY org.eclipse.acceleo.engine 2 0 2013-12-24 13:20:09.000
!MESSAGE Some files were generated more than once during this generation.
/res/values/strings.xml : 3 times
Так файл будет содержать только последнюю модификацию не все код из file1 file2 &.
Когда я искал решение, которое я нашел только инкрементный поколение с помощью
<%startUserCode>
<%endtUserCode>
или
* @generate NOT
Но это не является решением для файла XML.
Код, который я Ussing написать XML-строки это:
[template public setStrings(button : Button)]
[if (button.text <> null)]<string name="strings_[button.text.toString()/]">[button.text.toString()/]</string>[else]<string name="const_default">button_text</string>[/if]
[/template]