GWT DevMode не перезагружает изменения в файлах css

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

Вот пример того, как я использую ресурсы 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
        }
    }

Как упоминалось ранее, я использую tomcat внутри eclipse для запуска приложения, поэтому установлен параметр -noserver.


person Koizumi    schedule 13.08.2013    source источник


Ответы (1)


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

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

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

1) Вы можете поместить код CSS в свои файлы ui.xml, и devMode должен его подхватить.
Руководство по добавлению CSS в ui.xml

2) Вы также можете напрямую изменить файл css в папке webapps, а затем перенести любые внесенные вами изменения обратно в версию рабочей области.

person aglassman    schedule 13.08.2013
comment
В качестве обходного пути используйте maven-resources-plugin copy-resources, ‹directory› src / main / webapp ‹/directory› ‹outputDirectory› $ {project.build.directory} / gwt-webapp ‹/outputDirectory›. maven.apache.org/plugins/maven-resources- плагин / примеры / - person Daniel Hári; 12.06.2016
comment
Изменения, которые я вношу в файл CSS в папке webapps, просто не принимаются, и при обновлении страницы gwt говорит skipped compile because no input files have changed? - person xji; 19.07.2018