2013-08-13 18 views
5

Ustawiłem projekt GWT przy użyciu Gradle jako zarządzania kompilacją i wszystko jest w porządku.
Mogę wdrożyć mój projekt do mojego lokalnego tomcata w czasie zaćmienia, a aplikacja działa zgodnie z przeznaczeniem. Ale jeśli uruchomię DevMode i zmienię coś w moich zasobach css (które są powiązane jako klasy CssResource z adnotacją @Source), GWT DevMode nie przechwytuje go, a zmiany css nie są brane pod uwagę. Czy czegoś brakuje? Spodziewam się, że DevMode wykryje zmiany w plikach .css podczas programowania bez konieczności ponownego uruchamiania kompilacji gwt.GWT DevMode nie ładuje ponownie plików css

Oto przykład jak używam zasobów 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 { 

} 

Jak widać mam swój interfejs XOFooterPanelStyle która rozciąga CssResource. Jest używany w XOFooterPanelResource - który rozszerza ClientBundle - używając adnotacji @Source z nazwą mojego pliku CSS.

I tu jest częścią mojego Gradle plik kompilacji, który jest odpowiedzialny za uruchomienie 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 
     } 
    } 

Jak wspomniano wcześniej Używam Tomcat wewnątrz Eclipse, aby uruchomić aplikację, więc opcja jest ustawiona -noserver .

Odpowiedz

0

Jeśli nie zmienisz bezpośrednio pliku css, do którego odwołuje się tomcat, nie zobaczysz zmian w trybie deweloperskim. Wierzę, że kiedy wdrażasz za pomocą tomcat w środowisku Eclipse, twój kod nie jest odwoływany bezpośrednio z obszaru roboczego projektu eclipse, kopia jest przenoszona do folderu webapps tomcat.

Nie jestem pewien, jaki jest standardowy sposób obejścia tego problemu. Czuję, że musi istnieć opcja odświeżania zasobów statycznych do instancji tomcat od Eclipse, ale nie zaglądałem do niej.

Oto dwa sposoby stałam się wokół kwestii, kiedy potrzebne do:

1) Możesz umieścić kod CSS w plikach ui.xml, i że powinien dostać zabierani przez DEVMODE.
Tutorial on how to add css to your ui.xml

2) Można również zmodyfikować plik css w folderze webapps bezpośrednio, a następnie migrować wszelkie zmiany wprowadzone z powrotem do wersji roboczej.

+0

Aby obejść ten problem, należy użyć zasobów-kopii-wtyczki-maven-resource, src/main/webapp $ {project.build.directory}/gwt-webapp. https://maven.apache.org/plugins/maven-resources-plugin/examples/copy-resources.html –