При получении файла не найдена ошибка при запуске Sass и Compass как jar в ant - PullRequest
3 голосов
/ 23 ноября 2011

Я использовал следующий урок для добавления компаса в качестве цели в муравье: http://caueguerra.com/tutorial-using-sass-in-a-java-project

Вот драгоценные камни в моей банке:

java -jar jruby-compass-gems.jar -S gem list

*** LOCAL GEMS ***

chunky_png (1.2.5)
compass (0.11.5)
fssm (0.2.7)
rake (0.8.7)
sass (3.1.1)
sources (0.0.1)

Вот моя цель муравья для вызова compass compile:

<project name="run-compass" basedir=".">
    <property name="apps.root" value="${basedir}/src/main/webapp/apps" />
    <property name="sass.dir" value="${apps.root}/resources/sass" />

    <!-- Include jruby-compass jar -->
    <path id="jruby.classpath">  
         <fileset dir="${basedir}">  
            <include name="jruby*.jar"/>  
         </fileset>  
    </path>

<target name="compile.sass">  
     <java classname="org.jruby.Main" fork="true" failonerror="true" classpathref="jruby.classpath">  
         <arg line="${basedir}/compile.rb ${basedir} compile ${sass.dir}"/>  
     </java>  
</target>  
</project>

С приведенными ниже модификациями для compile.rb:

# Instead of loading lib dirs, just add the first arg
# Dir.entries(ARGV[0]).each do |lib|  
#    $LOAD_PATH.unshift "#{ARGV[0]}/#{lib}/lib"  
#end  
$LOAD_PATH.unshift "#{ARGV[0]}"

require 'rubygems'   
require 'compass'  
require 'compass/exec'  

# select_appropriate_command_line_ui is no longer a valid method, so don't use
#command_line_class = Compass::Exec::Helpers.select_appropriate_command_line_ui [ARGV[1], ARGV[2], "-q"]  
exit Compass::Exec::SubCommandUI.new([ARGV[1], ARGV[2], "-q"]).run!

Я вижу эту ошибку в сгенерированном файле .css после запуска ant:

Syntax error: File to import not found or unreadable: shared.
              Load paths:
                C:\Users\aliu\workspace\ui/src/main/webapp/apps/resources/sass
                file:C:/Users/aliu/workspace/ui/jruby-compass-gems.jar!/gems/compass-0.11.5/frameworks/blueprint/stylesheets
                file:C:/Users/aliu/workspace/ui/jruby-compass-gems.jar!/gems/compass-0.11.5/frameworks/compass/stylesheets
                C:/Users/aliu/workspace/ui/src/main/webapp/apps/resources/sass/../../../lib/ext-4.0.7/resources/themes/stylesheets
                Compass::SpriteImporter
        on line 1 of file:C:/Users/aliu/workspace/ui/jruby-compass-gems.jar!/gems/compass-0.11.5/frameworks/compass/stylesheets/compass/css3/_border-radius.scss
        from line 1 of file:C:/Users/aliu/workspace/ui/jruby-compass-gems.jar!/gems/compass-0.11.5/frameworks/compass/stylesheets/compass/_css3.scss 

Неправильная строка в _border-radius.scss:

@import "shared";

Обратите внимание, что путь загрузки содержит таблицы стилей компаса. Мне действительно странно, что компас смог найти _border-radius.scss, но не _shared.scss, потому что они находятся в одном каталоге . Я проверил содержимое фляги, чтобы убедиться, что _shared.scss существует. Кто-нибудь сталкивался с чем-то подобным или мог бы дать некоторое представление об этой проблеме? Любое предложение приветствуется.

Обновление : я тестировал запуск compile.rb в ${basedir} напрямую:

 compile.rb . compile src\main\webapp\apps\resources\sass

Он сработал и правильно создал файл .css, что означает, что проблема заключается в запуске из ant. Значит ли это, что мне нужно как-то исправить путь запуска муравья?

1 Ответ

0 голосов
/ 06 декабря 2011

В лучшем случае это обходной путь, но я понял, что хотя @import "shared" не может быть найдено, @import "compass/css3/shared" нормально, поэтому я изменил все такие локальные @import s для ссылки на более абсолютные пути.

...