В процессе разработки ПО весьма не мало зависит от используемого редактора кода. Я, поддавшись веянью моды, решил освоить текстовый редактор Sublime Text 2, слишком уж много положительных отзывов я слышу о нем. Мне самому хватало Eclipse. Но со временем в Eclipse меня стало раздражать подтормаживание интерфейса и в конечном итоге я пришел к выводу, что всех «прибамбасов» Eclipse мне не надо, а от Eclipse мне нужна лишь подстветка синтаксиса, навигация по проекту, быстрые клавиши и работа с Ant. Ant обычно в проектах у меня делал компиляцию или упаковку проекта (тут под упаковкой подразумевается распределение исходников по определенной в структуре каталогов, как это в PHP-фреймворках или в RubyOnRails нужно) и отправку итога на веб сервер по FTP. Начиная работу с Sublime Text 2, мне не хотелось переключаться на консоль для вызова Ant, а использовать его непосредственно в интерфейсе Sublime Text 2. И решение было найдено.
1.Подготовка
Итак, что у нас есть:
- рабочая машина у нас с Windows
- установлен JDK и на его директорию «bin» есть ссылка в переменной среды PATH
- установлен Ant и на его директорию «bin» есть ссылка в переменной среды PATH
- установлен редактор Sublime Text 2 (хотя тут я приведу все для portable версии)
Перво-наперво открываем в Sublime Text 2 нашу папку с исходниками «File»->«Open Folder...» и сохраняем манифест проекта «Project»->«Save Project As...», допустим это «helloworld.sublime-project», в корень.
2.Проверка работоспособности вызова Ant в Sublime Text 2
Для примера создадим в корневой директории проекта файл «build.xml» следующего содержания:
<?xml version="1.0"?>
<project name="helloworld" default="test">
<target name="test">
<echo>Ant works in '${ant.project.name}' project!</echo>
</target>
<target name="init">
<echo>Some initial logic in '${ant.project.name}' project!</echo>
</target>
<target name="trial" depends="init">
<echo>Some trial logic!</echo>
</target>
<target name="build" depends="init">
<echo>Some build logic!</echo>
</target>
</project>
и попробуем Ant:
- «Tools»->«Build System»->«Ant»
- «Tools»->«Build» или «Ctrl+B» или «F7»
и должно появиться внизу у Sublime Text 2:
Buildfile: *helloworldbuild.xml test: [echo] Ant works in 'helloworld' project! BUILD SUCCESSFUL Total time: 0 seconds [Finished in 2.1s]
Было обнаружено, что может возникнуть ситуация, когда Ant даже не вызовется. Симптом был такой: при запуске «Tools»->«Build» внизу в статусбаре говорилось «Building» и ничего не происходило. Открываем Sublime консоль через «Ctrl+`» и видим ошибки:
Running ant.bat Traceback (most recent call last): File ".sublime_plugin.py", line 337, in run_ File ".exec.py", line 154, in run File ".exec.py", line 45, in __init__ UnicodeDecodeError: 'ascii' codec can't decode byte 0xc0 in position 9: ordinal not in range(128)
Нужно заменить в «exec.py» (*SublimeText2DataPackagesDefault для portable версии) строку:
proc_env[k] = os.path.expandvars(v).encode(sys.getfilesystemencoding())
на:
proc_env[k] = os.path.expandvars(v.decode(sys.getfilesystemencoding())).encode( sys.getfilesystemencoding() )
и теперь все должно работать.
3.Создаем свой Build в Sublime Text 2
В пункте 2 продемонстрировано, что Sublime Text 2 изначально позволяет использовать из «build.xml» только «default» цель или связанный с ней каскад целей (выше это просто «test»). А мне, как я сказал ранее, нужно вызывать еще и отличные от «default» конечные цели «trial» и «build». Поскольку мы удостоверились, что Ant работает, то просто заменим «default» цель с «test» на «build» и пользуемся горячими клавишами «Ctrl+B» или «F7».
Buildfile: *helloworldbuild.xml init: [echo] Some initial logic in 'helloworld' project! build: [echo] Some build logic! BUILD SUCCESSFUL Total time: 0 seconds [Finished in 0.4s]
А для цели «trial» я создал свой «Build System», используя «Tools»->«Build System»->«New Build System...», и сохранил файл в директории *SublimeText2DataPackagesUser (для версии portable), хотя директорию Sublime Text 2 сам предложит нужную
# файл "Ant TRIAL.sublime-build"
{
"cmd": ["ant.bat", "trial"]
}
тут еще можно задать много интересных параметров.
Автоматически в меню должен появиться пункт «Tools»->«Build System»->«Ant TRIAL», выбираем его и пользуемся «Ctrl+B» или «F7» для сборки триальной версии. Если нужно итоговую сборку сделать, то переключаемся на «Tools»->«Build System»->«Ant» и пользуемся «Ctrl+B» или «F7». Но нам же и этого мало.
4.Настройка сочетаний клавиш в Sublime Text 2
Зачем постоянно переключаться между «Ant TRIAL» и «Ant», хотя у меня не часто это происходит. Назначим быстрые клавиши «Preferences»->«Key Bindings — User»:
[
{ "keys": ["f8"], "command": "exec", "args": {"cmd": ["ant.bat","trial"]} }
]
это подсмотрел в «Preferences»->«Key Bindings — Default»:
...
{ "keys": ["ctrl+break"], "command": "exec", "args": {"kill": true} }
...
Вернемся к «Tools»->«Build System»->«Ant», жмем «F8» и получаем «trial»:
Buildfile: *helloworldbuild.xml init: [echo] Some initial logic in 'helloworld' project! trial: [echo] Some trial logic! BUILD SUCCESSFUL Total time: 0 seconds [Finished in 0.4s]
а жмем «F7» и получаем «build»:
Buildfile: *helloworldbuild.xml init: [echo] Some initial logic in 'helloworld' project! build: [echo] Some build logic! BUILD SUCCESSFUL Total time: 0 seconds [Finished in 1.0s]
Заключение
Все, теперь мы можем использовать Ant непосредственно в интерфейсе Sublime Text 2. Нюанс лишь в том, что теперь у всех ваших проектов их «build.xml» должен содержать указанные цели — «trial» и «build» (или отличную от «build», указанную в свойстве «default» у «project» в «build.xml»).
Думаю, не мне одному это будет полезно для старта с Sublime Text 2.
Спасибо за внимание.
Автор: BorisPlus