2013-08-13 8 views
5

Ich habe ein GWT-Projekt mit Gradle als Build-Management eingerichtet und alles ist in Ordnung.
Ich kann mein Projekt auf meinem lokalen Tomcat in Eclipse bereitstellen und die Anwendung wird wie vorgesehen ausgeführt. Aber wenn ich den DevMode starte und etwas in meinen CSS-Ressourcen ändere (die als CssResource-Klassen mit einer @Source-Annotation gebunden sind), fängt der GWT DevMode sie nicht ab und die CSS-Änderungen werden nicht berücksichtigt. Fehle ich etwas? Ich würde erwarten, dass der DevMode Veränderungen in .css-Dateien während der Entwicklung erkennt, ohne erneut eine gwt-Kompilierung durchführen zu müssen. HierGWT DevMode nicht neu laden Änderungen an CSS-Dateien

ist ein Beispiel dafür, wie ich die CSS-Ressourcen verwende:

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 { 

} 

Wie man sehen kann ich meine XOFooterPanelStyle Schnittstelle haben, die CssResource erstreckt. Es wird in der XOFooterPanelResource - die ClientBundle erweitert - verwendet, indem die Annotation @Source mit dem Namen meiner CSS-Datei verwendet wird.

Und hier ist der Teil meiner gradle Build-Datei, die für den Start des DevMode verantwortlich ist:

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 
     } 
    } 

Wie bereits erwähnt, bevor ich tomcat innerhalb Eclipse bin die Anwendung auszuführen, so dass die -noserver Option gesetzt .

Antwort

0

Wenn Sie nicht direkt die CSS-Datei ändern, auf die Tomcat verweist, werden die Änderungen im Dev-Modus nicht angezeigt. Ich glaube, dass, wenn Sie über Tomcat in Eclipse bereitstellen, Ihr Code nicht direkt aus dem Eclipse-Projektarbeitsbereich referenziert wird, sondern eine Kopie in den Tomcat-Webapps-Ordner verschoben wird.

Ich bin mir nicht sicher, was der Standard Weg um dies ist. Ich habe das Gefühl, dass es eine Option geben muss, um statische Ressourcen für die Tomcat-Instanz von Eclipse zu aktualisieren, aber ich habe mich nicht damit befasst.

Hier sind zwei Möglichkeiten, die ich rund um das Thema bekommen habe, wenn ich gebraucht:

1) Sie können CSS-Code in Ihren ui.xml Dateien setzen, und das sollte von devmode abgeholt.

2) Sie können die css-Datei auch direkt im webapps-Ordner ändern und dann alle von Ihnen vorgenommenen Änderungen zurück in die Arbeitsbereichsversion migrieren.

+0

Als Abhilfe Verwendung Maven-Ressourcen-Plugin Kopie-Ressourcen, src/main/webapp $ {project.build.directory}/GWT-Webapp. https://maven.apache.org/plugins/maven-resources-plugin/examples/copy-resources.html –

Verwandte Themen