1

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

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

4

1 回答 1

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 可以提交。

于 2013-07-24T15:33:36.267 回答