Как заменить программу запуска BndTools по умолчанию и изменить структуру файла экспорта

Я использую BndTools (http://bndtools.org/) для разработки приложения OSGI. Все работает нормально, но у меня есть некоторые вещи, которые я хотел бы изменить при экспорте моего приложения.

Я пытаюсь добиться двух вещей (я думаю, что они могут быть связаны):

1: Замените стандартную программу запуска BndTools (aQute.launcher) пользовательской (или используйте ее в формате .JAR)

Как избавиться от стандартной программы запуска BndTools (aQute.launcher) или изменить ее на пользовательскую?

Единственное, что я смог найти по этой теме, находится здесь: http://goo.gl/jYliih

Лаунчеры не встроены в bnd, реальная стратегия запуска параметризуется. Средство запуска связывается с файлом bnd или bndrun, помещая JAR в папку -runpath. .JAR должен иметь заголовок Launcher-Plugin, чтобы быть средством запуска. Если на -runpath не найден лаунчер, то будет использоваться встроенный biz.aQute.launcher.

Причина в том, что мне нужно, чтобы мое приложение принимало аргументы команды и не мешало запускам aQute (как и все аргументы -run). С другой стороны, я хотел бы избавиться от пакетного .bat/.sh подхода к запуску приложения и использовать один файл .jar для запуска приложения.

Это возможно?

2: настроить экспортированную файловую структуру

По умолчанию BndTools создает эту файловую структуру при экспорте приложения:

jar/ -> Это папка пакетов OSGI jar.

aQute/ -> Средство запуска BndTools по умолчанию (Launcher.class внутри)

META-INF/ -> Почему здесь папка META-INF? это не JAR

launcher.properties -> Свойства лаунчера

start.sh --> Запускает Launcher.class из этих командных файлов.

start.bat / В чем преимущество этого по сравнению с JAR?

В основном я хотел бы удалить файлы aQute, META-INF и start.* и добавить папку bin для двоичных файлов.

Это должно быть возможно достичь с помощью скрипта «Ant», «Maven» или «Gridle». Но я могу просто создать «Проект BndTools» или «Проект Gradle» без поддержки BndTools. Я установил «плагин BndTools Gradle», но нигде не смог найти полезную документацию по этой теме.

Надеюсь, кто-нибудь может помочь мне или указать мне правильное направление с этим. Привет.


person Robert Koszewski    schedule 23.02.2016    source источник
comment
Рассматривали ли вы вопрос на ‹groups.google.com/forum/#!forum /bndtools-users› список рассылки?   -  person BJ Hargrave    schedule 24.02.2016


Ответы (1)


(Этот вопрос также был задан в списке группы bndtools)

Я немного сбит с толку, так как твои желания, похоже, исполняются. Вы можете экспортировать файл bndrun в один исполняемый файл JAR. В программе bndtools вы можете получить доступ к аргументам командной строки, получив службу объекта, а затем свойство службы «launcher.arguments». Это исходная строка String[], заданная основному методу лаунчера.

@Reference(target=“(launcher.arguments=*)”)
void setArgs( Map<String,Object> args ) {
    … = (String[]) args.get( “launcher.arguments”;
}

Экспортированный JAR является исполняемым JAR. JPM может легко преобразовать его в локальный исполняемый файл.

jpm install -n mycode mycode.jar

Вы можете установить jpm с https://github.com/bndtools/jpmcli.

Роберт: Спасибо, Питер, фрагмент кода аргумента запуска — это то, что мне было нужно.

О структуре папок:

Мне нужно, чтобы мои пакеты можно было обновлять. Если я встрою все пакеты в .Jar, их невозможно будет обновить. Мне просто нужно упаковать Launcher, имея снаружи пакеты.

BndTools имеет два варианта экспорта. 1, где вы можете встроить весь лаунчер и все пакеты в один JAR. Или вариант 2 — иметь пакеты внутри каталога lib и запускать их с помощью сценариев оболочки (start.bat, start.sh). Я ищу решение без оболочки.

Питер: Несмотря на то, что пакеты находятся внутри, вы все равно можете обновлять их, пока не очистите область хранения Framework. Вы можете легко включить File Install, например, и загрузить пакеты из каталога или использовать другой агент управления, Apache Ace.

С моей точки зрения, текущий экспорт JAR (на самом деле мне очень не нравится экспорт каталога, он беспорядочный) настолько хорош, насколько это возможно. У него очень хорошая модель выпуска, всего один файл, который легко версионировать и обновлять. С JPM вы можете установить его в любой системе.

Так что, если вы хотите что-то еще, вам придется создать свой собственный экспортер…

person Peter Kriens    schedule 29.02.2016