該提示的形式基督教迪特里希指出我朝着正確的方向發展。以下是我結束的代碼。
我創建了一個新類MyOutputConfigurationProvider實現了IOutputConfigurationProvider。 getOutputConfigurations方法返回兩個輸出配置,默認值爲src-gen和自定義src-gen-once正確的設置僅用於生成源一次。
package com.my.dsl;
import static com.google.common.collect.Sets.newHashSet;
import java.util.Set;
import org.eclipse.xtext.generator.IFileSystemAccess;
import org.eclipse.xtext.generator.IOutputConfigurationProvider;
import org.eclipse.xtext.generator.OutputConfiguration;
public class MyOutputConfigurationProvider implements
IOutputConfigurationProvider {
public final static String DEFAULT_OUTPUT_ONCE = "DEFAULT_OUTPUT_ONCE";
/**
* @return a set of {@link OutputConfiguration} available for the generator
*/
public Set<OutputConfiguration> getOutputConfigurations() {
OutputConfiguration defaultOutput = new OutputConfiguration(IFileSystemAccess.DEFAULT_OUTPUT);
defaultOutput.setDescription("Output Folder");
defaultOutput.setOutputDirectory("./src-gen");
defaultOutput.setOverrideExistingResources(true);
defaultOutput.setCreateOutputDirectory(true);
defaultOutput.setCleanUpDerivedResources(true);
defaultOutput.setSetDerivedProperty(true);
OutputConfiguration onceOutput = new OutputConfiguration(DEFAULT_OUTPUT_ONCE);
onceOutput.setDescription("Output Folder (once)");
onceOutput.setOutputDirectory("./src-gen-once");
onceOutput.setOverrideExistingResources(false);
onceOutput.setCreateOutputDirectory(true);
onceOutput.setCleanUpDerivedResources(false);
onceOutput.setSetDerivedProperty(true);
return newHashSet(defaultOutput, onceOutput);
}
}
要使用MyOutputConfigurationProvider實現增加配置方法,以你的模塊類:
/**
* Use this class to register components to be used within the IDE.
*/
public class MyDslUiModule extends com.my.dsl.ui.AbstractMyDslUiModule {
public MyDslUiModule(AbstractUIPlugin plugin) {
super(plugin);
}
@Override
public void configure(Binder binder) {
super.configure(binder);
binder.bind(IOutputConfigurationProvider.class).to(MyOutputConfigurationProvider.class).in(Singleton.class);
}
}
這是非常有幫助!一旦我在編輯器(DefaultUiModule)中使用它,我將不得不將它工作到獨立的生成器(用於命令行構建)。如果你已經這樣做了,一個指針將不勝感激。 – John 2012-08-29 16:59:05
我發現你的例子非常有用。但它缺少一些東西,一些挖到周圍導致這個URL:http://xtextcasts.org/episodes/15-output-configurations – 2014-07-19 02:25:47
感謝分享 – Chris 2016-10-05 18:33:00