GWT2.2项目使用ant解决CssResource编译问题

GWT2.2项目使用ant解决CssResource编译问题,gwt,ant,cssresource,Gwt,Ant,Cssresource,在更大的GWT2.2.0应用程序中,我们希望使用动态CellTables。与其他小部件不同,CellTable不使用css样式的标准名称(例如“gwt MenuItem”)。因此,我们必须从标准css转移到CssResource,它还必须包含标准的“gwt-”样式,如下所示: public interface IPreferences { public interface MyCssResource extends CssResource { String conten

在更大的GWT2.2.0应用程序中,我们希望使用动态CellTables。与其他小部件不同,CellTable不使用css样式的标准名称(例如“gwt MenuItem”)。因此,我们必须从标准css转移到CssResource,它还必须包含标准的“gwt-”样式,如下所示:


public interface IPreferences
{
   public interface MyCssResource extends CssResource
   {
      String content();
      ...
   }

   @ImportedWithPrefix("gwt")
   public interface GwtCss extends CssResource
   {
      String MenuItem();
      String MenuBar();
      String TabLayoutPanelTab();
   }
   ... 

   public interface MyResources extends ClientBundle
   {
      public static final MyResources INSTANCE = GWT.create(MyResources.class);

      @Source("preferences.css")
      @Import(GwtCss.class) <--- any imported interface will produce error
      MyCssResource cssStd();
   }
}

公共接口IPreferences
{
公共接口MyCssResource扩展了CssResource
{
字符串内容();
...
}
@导入带前缀(“gwt”)
公共接口GwtCss扩展了CssResource
{
字符串MenuItem();
字符串菜单栏();
字符串TabLayoutPanelTab();
}
... 
公共接口MyResources扩展了ClientBundle
{
公共静态最终MyResources实例=GWT.create(MyResources.class);
@来源(“preferences.css”)

@导入(gwtcs.class)您需要在单独的任务中生成资源文件。生成资源文件的调用(作为文档中的一个示例)是:

java -cp gwt-dev.jar:gwt-user.jar com.google.gwt.resources.css.InterfaceGenerator \
  -standalone -typeName some.package.MyCssResource -css input.css

因此,它可以是一个java任务,就像编译器一样。它在gwt CssResource文档中有记录:

谢谢您的提示。尽管我不明白为什么生成的接口应该“更好”与手工编写的方法相比,使用InterfaceGenerator进行的实验使我找到了一个解决方案,它首先避免了使用@Import:生成器使用@Classname注释,而不是在虚线“gwt-”样式上使用@ImpportWithPrefix。因此,所有样式都可以由一个接口导入,而不需要@Import其他样式。
java -cp gwt-dev.jar:gwt-user.jar com.google.gwt.resources.css.InterfaceGenerator \
  -standalone -typeName some.package.MyCssResource -css input.css