Как подключить источники для библиотечного пакета в OSGi/Equinox/Eclipse?

I создал библиотечный пакет для commons-lang3, и это хорошо работает. Я могу построить пакет, добавить зависимость, а затем использовать все классы в этом пакете в моих плагинах.

Но я не вижу источников в отладчике.

Каков самый простой способ создания исходного пакета для этого библиотечного пакета?

PS: Библиотечный пакет - это плагин, который содержит исходный JAR файл; Eclipse снова не компилирует источник, он просто добавляет существующий JAR к пути к классам.

Ответ 1

Если вы добавляете исходные файлы в свою собственную банку, создайте файл META-INF/MANIFEST.MF с записью "Eclipse-SourceBundle", которая указывает символическое имя вашего библиотечного пакета. Ниже приведен пример из фликса:

Manifest-Version: 1.0
Eclipse-SourceBundle: org.apache.felix.main;version="4.0.1";roots:="."
Bundle-Version: 4.0.1
Bundle-Name: Apache Felix Framework
Bundle-ManifestVersion: 2
Bundle-Vendor: The Apache Software Foundation
Bundle-SymbolicName: org.apache.felix.main.source

Чтобы иметь возможность просматривать исходный код в Eclipse, убедитесь, что этот источник находится в вашей целевой среде PDE (Windows- > Preferences- > Plugin Development- > TargetPlatform). Если вы используете Eclipse как целевую платформу, просто переместите его в свою папку плагинов eclipse.

Ответ 2

Вы можете включить источники в путь OSGI-OPT/src для пакета; то они будут видны отладчику Eclipse (не уверены в других IDE, поскольку я использую только Eclipse). Я нахожу это намного проще, чем создание отдельного исходного пакета, потому что один артефакт проще в управлении, чем два, и если вы создаете с помощью Bnd или Bndtools, мы создаем такие пакеты по умолчанию.

В редких случаях, когда вам нужно развернуть среду с ограниченными ресурсами, вы можете просто удалить каталог OSGI-OPT из пакета; это имя является условным для дополнительных данных, которые могут быть удалены без влияния на работу пакета.

Кстати, наш подход вдохновлен исполняемыми файлами UNIX, в которых часто содержатся дополнительные символы отладки и strip, которые удаляют их, чтобы при необходимости создавать меньший исполняемый файл.