有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

maven SASS的Java实现?

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


共 (4) 个答案

  1. # 3 楼答案

    我个人觉得SASS语法非常讨厌。对于Ruby/Python用户来说,这可能是第二天性;对于我这个爪哇人来说——没那么多。我更喜欢LESS,它建立在CSS语法的基础上,而不是提出一个新的语法。这有一个很好的额外优势,即能够“按原样”使用现有的CSS文件,并根据需要合并较少的功能

    也就是说,据我所知,SASS或更少版本都没有java端口。不过,它们都是基于ruby的,所以您可以在JRuby下安装它们。这种方法唯一的问题是JRuby的启动速度非常慢。不过,这并不是什么大问题,因为您可能会在开发中使用文件监控(一旦启动,它就会运行得非常顺利),而且您也不会太在意构建在部署过程中花费的时间会延长几秒钟

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

  2. # 4 楼答案

    蚂蚁:

    1. 下载JRuby完整jar文件(JRuby Complete jar download page
    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>