我在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
但是生产模式没有任何作用。有什么药物吗? 提前感谢您的帮助。
答案 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>
答案 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>