Реализация SASS для Java?

Я ищу реализацию SASS на Java (можно использовать с JSP / JSF). Для Python я нашел CleverCSS, но для Java нет ничего. Кто-нибудь слышал что-нибудь об этом инструменте для создания CSS?


person user213225    schedule 17.11.2009    source источник
comment
SASS / SCSS разработан на Ruby. Чтобы получить лучшие и новейшие функции, лучше использовать Ruby, чем встроенную реализацию на Java. Нативная реализация также будет позади самой последней и лучшей.   -  person Joep    schedule 06.08.2012
comment
@Joepie, для меня важнее иметь меньше зависимостей, чем иметь последнюю версию. SASS / SCSS, как он есть на данный момент, достаточно хорош для моих нужд. Мне просто нужен легкий способ его использования.   -  person Sam Hasler    schedule 08.08.2012
comment
Кроме того, то, что что-то не является собственной реализацией, автоматически не означает, что оно устареет. Можно использовать машинный перевод, или один увлеченный разработчик может поддерживать его в актуальном состоянии.   -  person Sam Hasler    schedule 08.08.2012


Ответы (12)


С ANT:

  1. Загрузите полный файл jar JRuby (страница загрузки JRuby Complete jar)
  2. Загрузите последний код HAML / SASS (tarball HAML / SASS) и распакуйте его. Поместите его в "/ libs / sass- [ВЕРСИЯ]"
  3. Добавьте следующее в файл сборки муравья.
  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>  
person Joep    schedule 15.12.2010
comment
Возможно ли это также через Maven? - person Jeremy S.; 10.11.2011
comment
Куда распаковать архив haml / sass? Нужно ли мне помещать его в гем-файлы для JRuby или я могу как-то напрямую ссылаться на них? То есть без использования установщика JRuby просто файл jar. Спасибо! - person Alex Ciminian; 08.05.2012
comment
Первый require require 'libs / sass / lib / haml' - это путь относительно папки вашего проекта. - person Joep; 09.05.2012
comment
Это означает, что я извлек его в каталог libs / sass в папке моего проекта. - person Joep; 09.05.2012
comment
@Joepie, ты можешь добавить поддержку компаса? - person Rubens Mariuzzo; 03.04.2013
comment
@RubensMariuzzo Вы используете версию Ant или Maven? - person Joep; 04.04.2013
comment
У Maven теперь есть хороший плагин для sass (работал над ним сам). sass-maven-plugin. С поддержкой компаса и смотреть цель. github.com/Jasig/sass-maven-plugin для github и репозиторий maven: mvnrepository.com/artifact/org.jasig.maven/ sass-maven-plugin / - person Joep; 04.04.2013
comment
Спасибо @Joepie, я планировал использовать ваше решение вместо этого плагина. Я дважды проверю это. Я просто не хочу подталкивать других пользователей к установке всего Ruby. :) - person Rubens Mariuzzo; 04.04.2013
comment
По какой-то причине require 'libs/sass-[VERSION]/lib/sass' не работал для меня как относительный, мне пришлось взять абсолют из свойства, которое у меня было в руке. Так это сработало с require $project.getProperty('project.root') + '/sass/sass-3.2.9/lib/sass' - person L. Holanda; 07.06.2013
comment
Кто-нибудь пробовал это на Mac? Он отлично работает в окнах, вызывающих ant target вручную в командной строке. Также отлично работает под хадсоном. Но товарищ по команде, у которого есть Mac, получает эту ошибку: При выполнении этой строки произошла следующая ошибка: build.xml:171: org.jruby.exceptions.RaiseException: odd number of args for Hash (Строка 171 в моем build.xml - это начало тега <script>) - person L. Holanda; 12.09.2013
comment
Привет, Джопи, ссылка на HAML / SASS кажется мертва, не могли бы вы обновить ссылку, если возможно? - person bummi; 07.11.2013
comment
Попробуйте github.com/nex3/sass/archive/stable.zip. Не знаю, работает ли это до сих пор, но вы можете попробовать ... - person Joep; 12.11.2013
comment
Примечание для тех, кто использует фрагмент для плагина maven: в закрывающих тегах <configuration> и <execution> отсутствует символ /. Я попытался отредактировать ответ, но изменения должны содержать не менее 6 символов, так что это лучшее, что я могу сделать. - person Mike; 29.06.2014
comment
Исправил незакрывающиеся элементы ... - person Joep; 08.08.2014

ZUSS - хорошая альтернатива LESS и SASS. Это похоже на МЕНЬШЕ. В отличие от LESS и SASS, обработка файлов ZUSS не требует интерпретатора JavaScript.

Отказ от ответственности: я разработчик ZUSS. Я разработал его просто потому, что не могу найти подходящего решения для Java.

person Tom Yeh    schedule 11.11.2011
comment
IMO, Zuss лучше всего подходит для среды Java, такой как вызов метода Java, преобразователь переменных и локатор ресурсов. - person Mo.; 15.11.2011
comment
Вау, красивое решение. Я учту это для будущих java-проектов! Действительно мило. У вас есть дополнительная информация о кешировании при использовании сервлета? В документации нет ясности об этом ... Насколько быстро выполняется этап компиляции при использовании сервлета? - person Joep; 19.12.2011
comment
Сервлет по умолчанию не предоставляет никакого кеша. Если хотите, пожалуйста, продлите его. - person Tom Yeh; 30.03.2012
comment
Расположение на GitHub: github.com/tomyeh/ZUSS; Репозиторий Maven: mvnrepository.com/artifact /com.github.tomyeh/zuss/ - person skia.heliou; 14.09.2017

Есть один проект: http://code.google.com/p/jsass/ ( но это на очень ранней стадии).

Если вас интересует Less, для него есть готовая версия Java: http://www.asual.com/lesscss/

person Gilberto Olimpio    schedule 15.04.2010
comment
Я только говорю, что это хорошо для получения дополнительной информации, проект выше использует rhino для запуска файла javascript. - person mP.; 02.05.2012
comment
jsass выглядит как заброшенное ПО. Проголосовали за lesscss-servlet asual - person Sam Hasler; 03.08.2012

Вы также можете взглянуть на Оптимизатор веб-ресурсов 4 J (WRO4J), который позволяет многое ( минимизация, объединение ресурсов) и поддерживает Less CSS (насколько мне известно во время выполнения).

Это означает: вы добавляете фильтр wro4j в свой web.xml, и когда вы запрашиваете CSS, ваши файлы .scss (или .saas) компилируются в стандартный CSS.

Я еще не использовал его, но он кажется более продвинутым, чем другие продукты, перечисленные здесь.


Фактически, я читал комментарии на веб-сайте Less for Java (http://www.asual.com/lesscss/), а WRO4J использует эту библиотеку, чтобы обеспечить ее «на лету Меньшая компиляция». Так что я думаю, что Less for Java - лучший вариант.

person legzo    schedule 16.07.2010

Знаете ли вы, что веб-фреймворк Vaadin имеет собственный встроенный компилятор Sass? См. https://vaadin.com/blog/-/blogs/state-of-sass-support-in-vaadin-7-today ...

person vorburger    schedule 14.11.2012

Я лично нахожу синтаксис SASS ужасно раздражающим. Для поклонников Ruby / Python это может стать второй натурой; для меня как Java-парня - не так уж и много. Я настоятельно предпочитаю LESS, который основан на синтаксисе CSS, а не придумывать новый. У этого есть приятное дополнительное преимущество, заключающееся в возможности использовать существующие файлы CSS «как есть» и включать МЕНЬШЕ функций по мере необходимости.

Тем не менее, насколько мне известно, ни у SASS, ни у LESS нет портов Java. Однако оба основаны на Ruby, поэтому вы можете установить их в JRuby. Единственная проблема с этим подходом заключается в том, что JRuby невероятно медленно запускается. Однако это не имеет большого значения, потому что вы, вероятно, собираетесь использовать мониторинг файлов при разработке (и после запуска он работает очень гладко), и вы не будете так сильно заботиться о том, что ваша сборка во время развертывания займет на несколько секунд больше. .

Существуют также некоторые реализации на основе PHP, такие как LessPhp, xCSS и другие. Хотя лично их не пробовал.

person ChssPly76    schedule 17.11.2009
comment
Синтаксис Sass был смягчен: теперь он очень похож на CSS без скобок. В следующей версии Sass будут доступны дополнительные скобки. Одним из преимуществ Sass является то, что компилятор и инструменты намного более зрелые, чем аналоги Less. IntelliJ 9 поддерживает Sass (установите плагин Ruby, чтобы получить его). Мы перешли с Less на Sass в первую очередь для поддержки редактора. Теперь он мне нравится больше, чем Less (родительская ссылка '&' бесценна). Инструмент css2sass упрощает преобразование файлов css - он также будет размещать селекторы там, где это возможно. Мы конвертировали большой проект и никаких проблем не возникло. - person jomohke; 23.12.2009
comment
Я тоже ненавижу sass-синтаксис. Якобы легче просматривать, но брекеты облегчают мне задачу. - person Juan Mendes; 15.12.2010
comment
Кстати, теперь есть синтаксис SCSS, в котором используются фигурные скобки. - person Debilski; 11.01.2011

Кажется, все-таки есть один (разработанный, вероятно, через некоторое время после того, как этот вопрос был задан)

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

person Eran Medan    schedule 09.08.2012
comment
Жалко, что он тянет jRuby: <dependency><groupId>org.jruby</groupId><artifactId>jruby-complete</artifactId><version>1.6.7.1</version></dependency> Я бы предпочел то, что не имеет никаких зависимостей. - person Sam Hasler; 09.08.2012
comment
@SamHasler понял, почему вы, кстати, не предпочитаете никаких зависимостей? кроме вероятности, что это изменит лицензию / сломает / раздувает вашу базу кода, даже сам maven имеет множество зависимостей ... все хорошее на самом деле имеет много зависимостей, это часть хороших вещей в открытом исходном коде, не так ли? - person Eran Medan; 09.08.2012
comment
Если что-то в одной из моих зависимостей сломается, я хотел бы иметь возможность самостоятельно исправить это. Я не знаю рубина, поэтому предпочел бы что-то, что на нем не было. - person Sam Hasler; 09.08.2012
comment
Ruby замечательный :) Я человек Java, и изучение Ruby было одной из самых увлекательных вещей, которые я делал в последнее время ... - person Eran Medan; 09.08.2012
comment
Но я здесь не единственный человек, мы не хотим добавлять рубин в список навыков, которые должны поддерживать наши разработчики. - person Sam Hasler; 09.08.2012
comment
Автор sass-maven-plugin здесь. Если кто-то полностью не переписал SASS на Java, jRuby всегда будет нужен. Это значительно более стабильно, поскольку тот же код SASS, который используется в предоставленных инструментах, используется плагином maven. - person Eric; 27.08.2012
comment
@Eric - спасибо, немного не по теме, не смог заставить его работать, не знал, что добавить в параметр скина, откроет проблему GH ... - person Eran Medan; 27.08.2012
comment
Я согласен с тем, что плагин, созданный специально для Sass, является лучшим решением, и я не думаю, что зависимости имеют большое значение. Тем не менее, мне не удалось заставить этот плагин работать, и я думаю, что это проблема JRuby. - person Snekse; 19.11.2012

Учитывая, что SASS должен быть преобразован в CSS, чтобы его можно было использовать, что плохого в использовании sass2css, который распространяется с Ruby SASS?

person aussiegeek    schedule 19.11.2009

Вы можете попробовать этот фильтр, который я только что собрал - https://github.com/darrinholst/sass-java

person Darrin Holst    schedule 13.05.2011

Я использую Compass и Sass в своем проекте eclipse с помощью Ant.

Я следил за этим руководством здесь:

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

Compass расширяет Sass и позволяет использовать другие мои дополнения.

http://compass-style.org/

person Eric H    schedule 29.09.2011
comment
Ссылка не работает. - person Rootical V.; 18.12.2014

Я знаю, что опаздываю на вечеринку, но я использовал такой подход к использованию SASS в проекте Java со сборкой Ant: http://workingonthecoolstuff.blogspot.com/2011/02/using-sass-in-ant-build.html Подводя итог, я m выполнял сборку на машине с установленными Ruby и Sass, поэтому было так же просто, как вызвать команду / приложение sass с помощью задачи Ant «применить» с набором файлов, который включает все файлы SCSS / SASS.

person spaaarky21    schedule 20.05.2011

Sassc - это реализация командной строки на языке C, которую легко добавить в процесс сборки. Основываясь на словах авторов, я бы сказал, что он должен быть в курсе sass:

Первоначально Sass был создан одним из создателей этой библиотеки Хэмптоном Кэтлином (@hcatlin). Расширение и продолжающаяся эволюция языка - все это результат многолетней работы Натана Вейценбаума (@ nex3) и Криса Эппштейна (@chriseppstein).

person Sam Hasler    schedule 21.08.2012