我在Java应用程序中实现了Sass支持。由于我们已经有了wro4j(在最新的1.7.5版本中),我决定使用它的rubySassCss作为预处理器。我完成了所有配置,整个过程.scss文件都没问题,直到我使用一些较新的语法。
使用带有3.2.0版本的Sass(http://sass-lang.com/documentation/file.SASS_CHANGELOG.html)的第8版带来的功能时出现错误,即可变参数(" $ args ..." syntax)和mixin声明中的内容块。
@mixin mix($arg...) {
font-size: 12px;
}
.class {
color: black;
}
例如,上面这个简单的.scss文件在由rubySassCss处理时抛出:
2014-06-13 11:13:48,574 DEBUG [ro.isdc.wro.http.WroFilter] Exception occured
ro.isdc.wro.WroRuntimeException: org.jruby.embed.EvalFailedException: (SyntaxError) Invalid CSS after "@mixin mix($arg": expected ")", was "...) {"
at ro.isdc.wro.extensions.processor.support.sass.RubySassEngine.process(RubySassEngine.java:70)
at ro.isdc.wro.extensions.processor.css.RubySassCssProcessor.process(RubySassCssProcessor.java:59)
at ro.isdc.wro.model.resource.processor.decorator.ProcessorDecorator.process(ProcessorDecorator.java:89)
at ro.isdc.wro.model.resource.processor.decorator.LazyProcessorDecorator.process(LazyProcessorDecorator.java:49)
at ro.isdc.wro.model.resource.processor.decorator.ProcessorDecorator.process(ProcessorDecorator.java:89)
at ro.isdc.wro.model.resource.processor.decorator.ProcessorDecorator.process(ProcessorDecorator.java:89)
如果不是wro4j发行说明(https://code.google.com/p/wro4j/wiki/ReleaseNotes)清楚地表明他们很久以前在IX 2012中实施了Sass处理器3.2.1这一点,那就不会让我感到惊讶:
发布1.5.0 日期:2012年9月27日
(...)
Issue523将rubySassCss处理器升级到3.2.1
任何人都可以告诉我他们是否有同样的问题或知道是什么原因造成的?我真的很想利用变量参数语法。
这里也是我的pom.xml:
<dependency>
<groupId>ro.isdc.wro4j</groupId>
<artifactId>wro4j-core</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>ro.isdc.wro4j</groupId>
<artifactId>wro4j-extensions</artifactId>
<version>1.7.5</version>
</dependency>
答案 0 :(得分:1)
看起来你只需要强制 sass-gems 到3.2.1版本。 wro4j应该强制自己,但它似乎没有(它使用3.1.9版本)。无论如何,解决方案是在pom.xml中的任何位置添加它:
<dependency>
<groupId>me.n4u.sass</groupId>
<artifactId>sass-gems</artifactId>
<version>3.2.1</version>
</dependency>