Как указать файлы классов с помощью bnd
Я уже успешно использовал автономный инструмент bnd для создания пакета OSGi из файла jar.
Теперь я хотел бы создать пакет, начинающийся с файлов.class. Просматривая некоторые официальные документы bnd, я не смог ничего найти для этого. Я думаю, что я ищу что-то вроде -classpath: output.jar
это может работать для файлов.class.
2 ответа
Существуют различные варианты: рабочая область bndtools (включает сборку Gradle), автономная Gradle, Maven и автономная bnd. Я настоятельно предпочитаю модель рабочего пространства Bndtools, поскольку она наиболее удобна для пользователя. Много поддержки, полная точность с Gradle без дополнительной работы, интерактивная отладка, удаленная отладка, упаковка и активное сообщество. Он основан на Eclipse.
Следующие ссылки должны помочь вам начать:
- Рабочая область здесь: https://bndtools.org/
- Руководство по Bnd: https://bnd.bndtools.org/
- v2Archive enRoute (это больше напрямую не поддерживается OSGi, но содержит обширную информацию о том, как работать с моделью Bndtools Workspace) https://v2archive.enroute.osgi.org/book/210-doc.html
Обновить
Если вы просто хотите использовать командную строку bnd, вы многое упрощаете, но вам также нужно позаботиться о большем. И вы скучаете по чудесному миру bndtools
:-(
Даже тогда у вас все еще есть выбор. bnd может использоваться для создания настроек модели Workspace. В этом случае вы следуете правилам учебников по рабочей области bndtools и т. Д. В этой модели вы можете использовать команды bnd build, compile и многие другие в рабочей области или каталогах проектов.
Если вы также хотите пропустить их, вы получите bnd, который просто генерирует JAR из файла свойств bnd. В этом случае вы должны указать все свои зависимости с помощью:
-classpath bin/,jar/a.jar, jar/b.jar
Затем вы можете использовать все инструкции Builder.
-includeresource
Private-Package
Export-Package
-exportcontents
...
Все заголовки пакетов и т. Д. Большинство проверок и сборок должны работать аналогично примерам рабочего пространства Bndtools. Конечно, вы пропустите запуск и многие другие функции. Однако я слышал о ком-то, кто строит большую кодовую базу таким образом...
Следующий URL показывает несколько примеров, как это использовать: https://bnd.bndtools.org/chapters/160-jars.html
Если я понимаю, что вы пытаетесь сделать, одним из вариантов может быть создание проекта Maven и использование преимуществ bnd-maven-plugin
как описано здесь. По сути, достаточно добавить следующий фрагмент в раздел build / plugins вашего pom:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>biz.aQute.bnd</groupId>
<artifactId>bnd-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>bnd-process</goal>
</goals>
</execution>
</executions>
</plugin>
Полный пример подхода, основанного на Maven, можно найти на веб-сайте OSGi enRoute: https://enroute.osgi.org/Tutorial/