使用GWT生成器/链接器将生成的工件发送到源目录中

时间:2012-05-01 07:51:31

标签: java gwt code-generation

我有一个自定义生成器,它在gwt中创建我自己的延迟绑定层,但我还需要在纯java模块中使用生成的代码。由于我的gwt生成器已按照类上的注释发出“当前绑定设置”,我希望它还为我的pure-java实例化器生成等效的样板。

我需要的只是我的链接器阶段甚至是生成器阶段将生成的文件发送到我的工作源包{就像android生成器为R.java}。如何随意将java文件发布到我的源文件夹中?我应该只使用java.io.File吗?我更喜欢使用像soyc这样的编译器标志,以便用户可以定义他们想要生成的源的位置。

1 个答案:

答案 0 :(得分:0)

由于没有其他人回答,我会把这个黑客扔到那里。

覆盖StandardGeneratorContext $ GeneratedUnitWithFile。 寻找:

  FileOutputStream fos = null;
  try {
    fos = new FileOutputStream(file);
    diskCache.transferToStream(sourceToken, fos);
  } 

添加

    File newFile = rebaseFile(file); // Make a copy wherever you need 
    diskCache.transferToStream(sourceToken, fos);

使用它来根据需要重新保存已保存的文件。我建议使用静态ThreadLocal告诉生成器保存副本的位置。当生成器子系统在StandardGeneratorContext上调用.finish()时(通常在GWT.create的末尾)调用此方法;你可以手动调用它,只要你没有任何待处理的PrintWriters提交。