LINUX.ORG.RU

Как добавить компилятор coffeescript (и другие препроцессоры) в maven-сборку?

 , , ,


0

1

Сабж. +@ maxcom

Предисловие: Рубисты (наши предшественники в компании) написали проект, а мы сейчас пишем его клон на джаве, т.к. анскильные рубисты сделали не айс.

Вопрос: Как добавить компилятор coffeescript в maven-сборку?

Проблема такова: кроме наших машин, есть тестовые и продакшен сервер, есть тестовый дженкинс. От них у нас есть только веб-интерфейсы ддя загрузки архива с war либо прямо исходника в несобранном виде. Всё что про эти сервера известно - там линукс или шиндовс x86_64. Поэтому установить nodejs/npm нормальным способом не удастся. Просить что-то установить админов - бесполезно, это люди с железной волей.

Есть три плагина для maven, которые используют, похоже, pure java реализацию coffeescript. Но эта их реализация - глючное говно. В частности, не собирает (собирает неправильно) тонны уже готового кода на CS, который до нас написали рубисты. Плюс плагины не айс (iron9light не обновлял плагин 3 года, плагин талиоса не умеет автоматически собирать в раздельные js-файлы, у jakewins тоже какие-то проблемы).

Я пока хочу сделать так: прямо в корне проекта сделать папочку /opt, вручную статически собрать node и coffeescript (еще не разбирался как, наверняка возможно), и положить их в /opt/linux/x86, /opt/linux/x86_64.... Потом в pom.xml антом или грувёй подцепиться на фазу generate-sources и дёрнуть эти экзешники с правильными парамерами и правильной архитектурой и ОС.

Но всё это выглядит как-то шатко и костыльно.

Может кто-нибудь уже реализовывал такую или похожую задачу?

★★★★☆

Как вариант — можешь в плагине через nashorn дёргать компилятор coffeescript. Будет кроссплатформенно, но не факт, что будет работать.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Почти решено

1) Коллеги вручную пофиксили баги в talios плагине, и скоро отправят пулл-риквест. Так что можно юзать его.

2) Решение запустить js-версию на Rhino/Nashorn выглядит ОК.

С другой стороны

Было бы круто узнать, как всё-таки кошерно запускать произвольные, любые нативные генераторы через мавен.

stevejobs ★★★★☆
() автор топика
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: Почти решено от stevejobs

Было бы круто узнать, как всё-таки кошерно запускать произвольные, любые нативные генераторы через мавен.

кошерно - написать плагин для каждого генератора, который ты хочешь запускать
проще - воспользоваться exec плагином
Вместо того чтобы совать статически собранные бинарники в проект кошернее запаковать их и засунуть в мавен-репозиторий (для каждой ахритектуры свой classifier), а дальше распаковывать в target и запускать оттуда. Из очевидных плюсов - артефактами можно воспользоваться из других проектов, scm не засоряется ненужными бинарниками, опять же версионирование бинарников в мавен-репозитории сделано так как это нужно для версионирования бинарников, а не как это нужно для версионирования исходных кодов.

maloi ★★★★★
()
Ответ на: комментарий от maloi

А как тебе такой вариант:

1) распаковывать не в target, а в temp. Потому что target могут удалить (дженкинс?), и перераспаковка займет время. А время важно, потому что см п.2

2) распаковывать не пред-собранный компилятор/генератор, а саму node.js. Потом честно просить ноду сбилдить этот компилятор.

3) На основании этого можно будет сделать сплав из maven, node/package, grunt, ruby/gems и других систем сборки. Что позволит пользоваться софтом сразу из всех «миров» одновременно. Хочешь заюзать из мавена какое-нибудь рубиговно? Да без проблем, пара строчек.

Вообще я надеялся, что идея из пункта 3 не новая, и уже тысячу раз реализована :)

stevejobs ★★★★☆
() автор топика
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от stevejobs

1) temp почистят с ещё большей вероятностью + если распаковывать в место с уникальным названием, то ты его между сборками должен передавать, а если с не-уникальным, то оно может оказаться занятым и вообще это дыра в безопасности.

2) ты можешь распаковать её один раз, собрать, запаковать результат и выложить в репозиторий (глобальный или локальный на данной машине), причем делать это автоматически тем же дженкинсом по необходимости

3) подозреваю, что будет что-то вроде xkcd://927

maloi ★★★★★
()

а мы сейчас пишем его клон на джаве

Мда.. все печально.

special-k ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.