77

我正在寻找 Java 中的 SASS 实现(可以与 JSP/JSF 一起使用)。对于 Python,我找到了 CleverCSS,但对于 Java 则没有。有人听说过这种用于生成 CSS 的工具吗?

4

12 回答 12

49

使用蚂蚁:

  1. 下载 JRuby Complete jar 文件(JRuby Complete jar 下载页面
  2. 下载最新的 HAML/SASS 代码 ( HAML/SASS tarball ),然后解压。把它放在“/libs/sass-[VERSION]”
  3. 将以下内容添加到 ant 构建文件中。
  4. 将脚本中的[VERSION]替换为JRuby和SASS对应的版本
  5. 运行ant脚本,sass或scss文件将被编译!

<path id="JRuby">
    <fileset file="libs/jruby-complete-[VERSION].jar"/> <!-- Location of JRuby jar file -->
</path>  

<target name="compileSCSS">
    <echo message="Compiling scss files..." />
    <property name="filesIn" value="${dir.css}/scss/**/[^_]*.scss" />
    <property name="fileOutDir" value="/${dir.css}/${dir.css.build}" />
    <script language="ruby" classpathref="JRuby">
        <![CDATA[
            require 'libs/sass-[VERSION]/lib/sass'
            require 'sass/exec'

            files = Dir.glob($project.getProperty('filesIn'))
            Dir.mkdir($project.getProperty('fileOutDir')) unless File.exists?($project.getProperty('fileOutDir'))
            files.each do 
                | file |
                puts "     [sass compiler] " + file + " -> " + $project.getProperty('fileOutDir') + "/" + File.basename(file, ".*") + ".css"
                opts = Sass::Exec::Sass.new(["--load-path", File.dirname(file), file, File.join($project.getProperty('fileOutDir'), File.basename(file, ".*") + ".css")])
                opts.parse
            end
        ]]>
    </script>
    <echo message="Done compiling scss files!" />
</target>

使用 MAVEN:

Maven 也可以这样做: 使用 antrun 插件:

<project>
<build>
<plugins>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.6</version>
    <executions>
        <execution>
            <id>compileAndMinify</id>
            <phase>compile</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <target>
                    <mkdir dir="${project.build.directory}/compiled" />

                    <echo message="Compiling scss files..."/>
                    <path id="JRuby">
                        <fileset file="${basedir}/jars/jruby-complete-[VERSION].jar"/>
                    </path>
                    <property name="filesIn" value="${project.build.directory}/css/**/[^_]*.scss" />
                    <property name="fileOutDir" value="${project.build.directory}/compiled/css" />
                    <script language="ruby" classpathref="JRuby">
                        <![CDATA[
                            require 'libs/sass-[VERSION]/lib/sass'
                            require 'sass/exec'

                            files = Dir.glob($project.getProperty('filesIn'))
                            Dir.mkdir($project.getProperty('fileOutDir')) unless File.exists?($project.getProperty('fileOutDir'))
                            files.each do 
                                | file |
                                puts "     [sass compiler] " + file + " -> " + $project.getProperty('fileOutDir') + "/" + File.basename(file, ".*") + ".css"
                                opts = Sass::Exec::Sass.new(["--load-path", File.dirname(file), file, File.join($project.getProperty('fileOutDir'), File.basename(file, ".*") + ".css")])
                                opts.parse
                            end
                        ]]>
                    </script>
                </target>
            </configuration>
        </execution>
    </executions>
</plugin>
</plugins>
</build>
</project>  
于 2010-12-15T10:30:27.253 回答
19

ZUSS是 LESS 和 SASS 的一个很好的替代品。它类似于 LESS。与 LESS 和 SASS 不同,ZUSS 文件的处理不需要 JavaScript 解释器。

免责声明:我是 ZUSS 的开发者。我开发它只是因为我找不到适用于 Java 的简洁解决方案。

于 2011-11-11T10:51:43.010 回答
14

有一个项目:http ://code.google.com/p/jsass/ (但它处于非常早期的阶段)。

如果你对 Less 感兴趣,这里有一个现成的 Java 版本:http ://www.asual.com/lesscss/

于 2010-04-15T02:57:29.883 回答
10

您还可以查看Web Resource Optimizer 4 J (WRO4J),它允许做很多事情(缩小、资源合并)并支持 Less CSS(据我所知在运行时)。

这意味着:您将 wro4j 过滤器添加到您的 web.xml,并且当您请求 CSS 时,您的 .scss(或 .saas)文件将被编译为标准 CSS。

我还没有使用它,但它似乎比这里列出的其他产品更先进。


事实上,我正在阅读 Less for Java 网站 ( http://www.asual.com/lesscss/ ) 上的评论,而 WRO4J 使用这个库来提供它的“动态 Less 编译”。所以我认为 Less for Java 是要走的路。

于 2010-07-16T09:17:54.740 回答
7

您知道 Vaadin Web 框架带有它自己的内置 Sass 编译器吗?请参阅https://vaadin.com/blog/-/blogs/state-of-sass-support-in-vaadin-7-today ...

于 2012-11-14T20:07:52.957 回答
5

我个人觉得 SASS 语法很深,非常烦人。对于 Ruby / Python 人群来说,它可能是第二天性;对我作为 Java 人来说 - 不是那么多。我非常喜欢基于 CSS 语法的LESS ,而不是提出新的语法。这有一个很好的附加优势,即能够“按原样”使用现有的 CSS 文件并根据需要合并 LESS 功能。

也就是说,据我所知,SASS 和 LESS 都没有 Java 端口。但是,两者都是基于 ruby​​ 的,因此您可以将它们安装在JRuby下。这种方法的唯一问题是 JRuby 的启动速度非常慢。不过,这并不是什么大问题,因为您可能会在开发中使用文件监控(一旦启动,它就会运行得非常流畅),而且您不会太在意在部署期间构建需要多几秒钟的时间.

还有一些基于 PHP 的实现,例如LessPhpxCSS等。不过,还没有亲自尝试过。

于 2009-11-17T20:53:33.217 回答
4

毕竟似乎有一个(可能是在提出这个问题后一段时间才开发的)

https://github.com/Jasig/sass-maven-plugin

于 2012-08-09T04:00:22.523 回答
3

鉴于必须将 SASS 转换为 CSS 才能使用,那么使用与 Ruby SASS 一起分发的 sass2css 有什么问题?

于 2009-11-19T04:28:33.533 回答
3

你可以试试我刚刚放在一起的这个过滤器 - https://github.com/darrinholst/sass-java

于 2011-05-13T01:16:11.733 回答
1

我在使用 Ant 的 Eclipse 项目中使用 Compass & Sass。

我在这里遵循了本教程:

http://caueguerra.com/tutorial-using-sass-in-a-java-project

Compass 扩展了 Sass 并允许我的其他附加功能。

http://compass-style.org/

于 2011-09-29T22:03:57.987 回答
1

我知道我迟到了,但这是我在一个带有 Ant 构建的 Java 项目中使用 SASS 的方法: http ://workingonthecoolstuff.blogspot.com/2011/02/using-sass-in-ant -build.html 总而言之,我在安装了 Ruby 和 Sass 的机器上进行构建,所以它就像使用 Ant“应用”任务调用 sass 命令/应用程序一样简单,文件集包含所有 SCSS/SASS文件。

于 2011-05-20T17:56:19.083 回答
0

Sassc是 C 中的命令行实现,应该很容易添加到构建过程中。根据作者,我会说它应该与 sass 保持同步:

Sass 最初是由这个库的共同创建者 Hampton Catlin (@hcatlin) 创建的。该语言的扩展和持续发展都是 Nathan Weizenbaum (@nex3) 和 Chris Eppstein (@chriseppstein) 多年工作的结果。

于 2012-08-21T11:50:17.873 回答