在productionMode中,VAADIN找不到主题

时间:2013-05-15 09:39:15

标签: java resources themes vaadin vaadin7

我在src / main / webapp / VAADIN / themes / mytheme /我的VAADIN应用程序中有自定义主题mytheme.scss和styles.scss。 当weba中的vaadin productionMode部署参数设置为false时,一切正常。当我将参数设置为true时,突然Vaadin无法找到我主题的资源并继续抱怨:

Requested resource [/VAADIN/themes/mytheme/styles.css] not found from filesystem or through class loader. Add widgetset and/or theme JAR to your classpath or add files to WebContent/VAADIN folder

我没有/ WebContent目录,而是/ webapp,因为它是一个maven web-app项目。 我尝试将VAADIN文件夹放到:
的src / main /资源
的src /主/ web应用
的src /主/ web应用/ WEB-INF

但是生产模式没有任何作用。有什么药物吗? 提前感谢您的帮助。

3 个答案:

答案 0 :(得分:13)

您需要在pom.xml中添加以下目标,该目标会将.scss文件编译为.css文件:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.2.1</version>
    <executions>
        <execution>
            <phase>generate-sources</phase>
            <goals>
                <goal>java</goal>
            </goals>
            <configuration>
                <classpathScope>compile</classpathScope>
                <mainClass>com.vaadin.sass.SassCompiler</mainClass>
                <arguments>
                    <argument>src/main/webapp/VAADIN/themes/heijunka/styles.scss</argument>
                    <argument>src/main/webapp/VAADIN/themes/heijunka/styles.css</argument>
                </arguments>
            </configuration>
        </execution>
    </executions>
</plugin>

来源:http://dev.vaadin.com/ticket/10291

答案 1 :(得分:3)

@Develman已经回答了如何解决这个问题,但还有一些解释。

当Vaadin应用程序处于开发模式时,它会执行SCSS - &gt;请求styles.css且文件不存在时自动进行CSS编译。在生产模式中,这不会发生。如果styles.css存在,则无论模式如何,都使用该文件,并且没有SCSS - &gt; CSS编译。

答案 2 :(得分:1)

我甚至得到了这个错误 - 尽管我已经将maven目标添加到了pom.xml中 最后了解原因,因为我已经在web.xml上启用了Vaadin的生产模式 所以当生产模式开启时,它不会生成styles.css文件。 因此,您需要禁用生产模式才能启用此SCSS - &gt; CSS编译。

<context-param>
    <description>Vaadin production mode</description>
    <param-name>productionMode</param-name>
    <param-value>false</param-value>
</context-param>