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 опция установлена.

1 ответ

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

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

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

1) Вы можете поместить код CSS в свои файлы ui.xml, и он должен быть подобран devMode.
Учебник о том, как добавить CSS в ваш ui.xml

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

Другие вопросы по тегам