Как заменить панель запуска 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

aQute/ -> Стандартный BndTools Launcher (Launcher.class внутри)

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

launcher.properties -> Свойства запуска

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

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

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

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

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

1 ответ

Решение

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

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

@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 с http://jpm4j.org/.

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

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

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

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

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

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

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

Другие вопросы по тегам