2013-08-13 2 views
5

Я создал проект GWT с использованием Gradle в качестве управления построением, и все в порядке.
Я могу развернуть свой проект на своем локальном коте в затмении, и приложение работает по назначению. Но если я запустил DevMode и что-то изменил в своих ресурсах css (которые связаны как классы CssResource с аннотацией @Source), GWT DevMode не поймает его, и изменения css не учитываются. Я что-то упустил? Я бы ожидал, что DevMode обнаружит изменения в .css-файлах во время разработки без необходимости повторного компиляции gwt.GWT DevMode не перезагружает изменения в файлах css

Вот пример того, как я с помощью CSS ресурсы:

public interface XOFooterPanelResource extends FooterPanelResource, ClientBundle { 
    @Override 
    @Source("XOFooterPanel.css") 
    XOFooterPanelStyle style(); 

    @Override 
    @ImageOptions(repeatStyle = RepeatStyle.Horizontal) 
    ImageResource footerPanelBackground(); 

    @Override 
    @ImageOptions(repeatStyle = RepeatStyle.Horizontal) 
    ImageResource footerPanelBackgroundEndUser(); 

    @Override 
    @Source("footerDelimiter.jpg") 
    ImageResource footerDelimiter(); 
} 

public interface XOFooterPanelStyle extends FooterPanelStyle, CssResource { 

} 

Как вы можете видеть, у меня есть свой интерфейс XOFooterPanelStyle, который проходит CssResource. Он используется в XOFooterPanelResource, который расширяет ClientBundle, используя аннотацию @Source с именем моего файла CSS.

А вот часть моего Gradle файла сборки, который отвечает за запуск DevMode:

javaexec { 
     main = 'com.google.gwt.dev.DevMode' 

     jvmArgs = ['-Xmx2048M', '-XX:MaxPermSize=1024M'] 

     classpath { 
      [ 
       sourceSets.main.java.srcDirs, 
       // Java source 
       sourceSets.main.output.resourcesDir, 
       // Generated resources 
       sourceSets.main.output.classesDir, 
       // Generated classes 
       sourceSets.main.compileClasspath  // Deps 
      ] 
     } 

     args = [ 
       '-startupUrl', 
       'myapp/index.html', 
       '-noserver', 
       '-war', 
       'build/devmode', 
       '-gen', 
       'gen' 
      ] 
     ext.gwtModules.each { 
      args += it 
     } 
    } 

Как упоминалось ранее, я использую внутри кота затмении, чтобы запустить приложение, поэтому вариант -noserver установлен ,

ответ

0

Если вы не напрямую меняете файл css, на который ссылается tomcat, вы не увидите изменений в режиме dev. Я считаю, что при развертывании через tomcat в eclipse ваш код не ссылается непосредственно из рабочей области проекта eclipse, копия переносится в папку tomapat webapps.

Я не уверен, что такое стандартный способ. Я чувствую, что есть необходимость обновить статические ресурсы для экземпляра tomcat из eclipse, но я не изучил его.

Вот два способа, которые я получил вокруг вопроса, когда мне нужно:

1) Вы можете поместить код CSS в ваших ui.xml файлах, и которые должны получить подобраны DevMode.
Tutorial on how to add css to your ui.xml

2) Кроме того, можно изменить файл CSS в папке WebApps непосредственно, а затем перенести любые изменения, сделанные назад в версии рабочей области.

+0

В качестве обходного пути используйте ресурсы ресурсов maven-resources-plugin, src/main/webapp $ {project.build.directory}/gwt-webapp. https://maven.apache.org/plugins/maven-resources-plugin/examples/copy-resources.html –

Смежные вопросы