Фон
Я работаю над проектом, в котором мы размещаем программное обеспечение Java и сопутствующий пакет R на Github . Пакет R можно легко установить непосредственно из исходного кода, используя devtools::install_github()
, но сначала необходимо создать файл Jar.
Поскольку пакет R зависит от функций в файле Jar, это создает проблему, поскольку пакеты Jar и R часто не синхронизированы, и пользователи не могут использовать более новые функции, пока мы не выпустим новую версию. Поскольку изменения в Jar часто крошечные, не всегда имеет смысл создавать новый релиз.
Идеальное решение (?)
Есть два подхода, о которых я мог бы подумать, но я не совсем уверен, какой из них имеет больше смысла, и мне придется потратить больше времени на выяснение каждого из них:
Напишите функцию на R, которая загружает исходный код из GitHub и собирает Jar с помощью чего-то вроде system("jar cfe myJar.jar myClass myClass.class"
. В идеале для этого есть пакет, но я не смог его найти. Я также сначала должен выяснить, как загрузить исходные файлы.
Реализовать автоматическое развертывание, которое загружает Jar в один и тот же выпуск после каждой фиксации. Я видел, что Travis CI может создавать файл Jar, но он создает новую версию для каждого коммита или только из коммитированных коммитов, что не идеально. Было бы лучше, если бы у нас был один выпуск, который перезаписывался самым последним файлом Jar при каждом коммите.
Кто-нибудь имеет опыт работы с этим / может указать мне хранилище, где реализовано нечто подобное / может показать мне лучшее решение?