Как я могу сделать перезагрузку CSS при обновлении страницы?GWT Maven - PullRequest
0 голосов
/ 19 февраля 2019

Вот проект, над которым я работаю: https://github.com/veracityidinc/idf-sandbox

Я разработчик внешнего интерфейса, так что мне все это неясно.Я посмотрел журнал сборки, чтобы попытаться выяснить это после того, как, конечно, проконсультировался с Google, и вижу людей, которые говорят что-то о плагине и копируют файлы.Мне просто кажется очень странным, что веб-проект - будь то какой-либо - не делает этого «из коробки».Очень утомительно закрывать и запускать сервер каждый раз, когда я делаю изменения.Также очень странно, что html-часть приложения фактически делает это самостоятельно.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

GWT работает только с JS (и активами, непосредственно загружаемыми кодом через специальные конструкции кода), а не с другими веб-активами.

DevMode (mvn gwt:run с плагином Mojo) будет обслуживать ваше веб-приложение, а Mojo -плагин дополнительно скопирует src/main/webapp при запуске.Если вы хотите обновить свои веб-ресурсы без перезапуска DevMode, запустите mvn war:exploded -Dgwt.compiler.skip.И аналогично для ресурсов (в src/main/resources): запустите mvn process-resources.

. Это также одна из веских причин принять другой макет проекта, разделив код клиента и сервера на отдельные модули Maven и запустив клиент и сервер.код отдельно (mvn gwt:codeserver для кода клиента, через net.ltgt.gwt.maven:gwt-maven-plugin и mvn jetty:run или аналогично для серверного кода и веб-ресурсов)

0 голосов
/ 19 февраля 2019

Используя GWT SDM -Super dev mode - вы получите это из коробки, SDM продолжит работу в фоновом режиме и будет следить за измененными файлами, а после обновления будет постепенно перекомпилировать ваше приложение и перезагрузить ресурсы.

если вы используете maven для работы SDM, вам нужно создать проект GWT и применить плагин maven, рекомендуемый плагин - это плагин tbroyer и создать проект GWT, который уже настроен правильно изВы можете использовать мультимодуль tbroyer gwt-maven-archetype .

, следуя инструкциям архетипа, когда вы вводите команду mvn gwt:codeserver -pl *-client -am, на самом деле вы запускаете SDM.другая команда запускает сервер приложений.

сгенерированный проект имеет модуль xxx-server, в котором вы можете найти файл css.как только вы запустите обе команды и сможете загрузить свое приложение в браузере, попробуйте изменить некоторые стили в этом файле и обновить страницу, изменения должны быть отражены.

это пример конфигурации плагина при генерации проекта изarchtype

<plugin>
    <groupId>net.ltgt.gwt.maven</groupId>
    <artifactId>gwt-maven-plugin</artifactId>
    <configuration>
        <moduleName>[replace this with your module]</moduleName>
        <moduleShortName>app</moduleShortName>
    </configuration>
</plugin>

теперь, если вы не используете эту многомодульную структуру, вы можете попробовать запустить приложение и SDM, используя mvn gwt:devmode, это должно запустить SDM для вас

, и если вывы используете uibinder, и вы редактируете стили в файлах * .ui.xml, когда SDM перекомпилирует, поэтому он также должен выбрать изменения.

Редактировать

Проверка вашегопроект Я сделал некоторые изменения, чтобы он работал.

сначала я изменил pom.xml, вы можете использовать мою версию для более поздних проектов, но я думаю, что лучший способ - это сгенерировать проект с использованием архетипа tbroyer

pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.candorgrc.idfusion</groupId>
    <artifactId>idf-sandbox</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>IdFusion™ Sandbox</name>
    <properties>

        <!-- Setting maven.compiler.source to something different to 1.8 needs
            that you configure the sourceLevel in gwt-maven-plugin since GWT compiler
            2.8 requires 1.8 (see gwt-maven-plugin block below) -->
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <inject.gin.version>2.1.2</inject.gin.version>
        <inject.guice.version>3.0</inject.guice.version>
        <libsass.version>0.2.10-libsass_3.5.3</libsass.version>
        <lesscss.version>1.7.0.1.1</lesscss.version>
        <elemental2.version>1.0.0-RC1</elemental2.version>

    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.google.gwt</groupId>
                <artifactId>gwt</artifactId>
                <version>2.8.2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>com.google.gwt</groupId>
            <artifactId>gwt-servlet</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.google.gwt</groupId>
            <artifactId>gwt-user</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.google.gwt</groupId>
            <artifactId>gwt-dev</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.google.elemental2</groupId>
            <artifactId>elemental2-dom</artifactId>
            <version>${elemental2.version}</version>
        </dependency>
        <dependency>
            <groupId>com.google.gwt.inject</groupId>
            <artifactId>gin</artifactId>
            <version>${inject.gin.version}</version>
        </dependency>
        <dependency>
            <groupId>com.google.inject</groupId>
            <artifactId>guice</artifactId>
            <version>${inject.guice.version}</version>
        </dependency>

    </dependencies>

    <build>
        <!-- Output classes directly into the webapp, so that IDEs and "mvn process-classes"
            update them in DevMode -->
        <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>

        <plugins>

            <!-- GWT Maven Plugin -->
            <plugin>
                <groupId>net.ltgt.gwt.maven</groupId>
                <artifactId>gwt-maven-plugin</artifactId>
                <version>1.0-rc-8</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <moduleName>com.candorgrc.idfusion.sandbox.IdfSandbox</moduleName>
                    <moduleShortName>IdfSandbox</moduleShortName>
                    <failOnError>true</failOnError>
                    <!-- GWT compiler 2.8 requires 1.8, hence define sourceLevel here if
                        you use a different source language for java compilation -->
                    <sourceLevel>1.8</sourceLevel>

                    <warDir>${project.build.directory}/${project.build.finalName}</warDir>
                    <classpathScope>compile+runtime</classpathScope>
                    <!-- URL(s) that should be opened by DevMode (gwt:devmode). -->
                    <startupUrls>
                        <startupUrl>sandbox.html</startupUrl>
                    </startupUrls>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.lesscss</groupId>
                <artifactId>lesscss-maven-plugin</artifactId>
                <version>${lesscss.version}</version>
                <configuration>
                    <sourceDirectory>${project.basedir}/src/main/webapp/less</sourceDirectory>
                    <outputDirectory>${project.basedir}/src/main/webapp/less</outputDirectory>
                    <compress>true</compress>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>


        </plugins>
    </build>
</project>

вам также нужно будет создать новый пакет на том же уровне, что и пакет клиента, и назвать его public это значение по умолчаниюult публичный ресурс, используемый gwt.это должно войти в папку src com.candorgrc.idfusion.sandbox.public, затем переместить файл css sandbox.css в этот пакет.

как только вы сделаете эти изменения, вы сможете перезагрузить css, когда обновите страницу, пока вашаIDE знает, что css изменен, и он должен переместить его в нужное место в целевой папке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...