сценарий оболочки является языком, разработанным для управления файлами и процессами. В то время как это является большим для этого, это не язык общего назначения, поэтому всегда пробуйте к связующей логике от существующих утилит вместо того, чтобы воссоздать новую логику в сценарии оболочки.
Кроме того общего принципа я собрал [приблизительно 110] общие ошибки сценария оболочки .
Я считаю, что Require-Bundle
является частью Eclipse (которая теперь включена в спецификацию OSGi для поддержки Eclipse). «Чистый» способ OSGi - использовать Import-Package
, поскольку он специально отделяет пакет от пакета, который его предоставляет. Вы должны объявлять зависимости от функциональности, которая вам нужна (API Java, предоставляемого определенной версией определенного пакета), а не от того, откуда эта функциональность поступает (что не должно иметь для вас значения). Это позволяет сохранять состав пакетов более гибким.
Аналогия с JavaScript: это похоже на определение того, поддерживает ли веб-браузер определенный API, а не на вывод из того, что строка пользовательского агента сообщает, что это за браузер.
Питер Кринс из OSGi Alliance может больше сказать об этом в блоге OSGi .
Вероятно, единственный случай, когда вам нужно использовать Require-Bundle
, - это если у вас есть разделенные пакеты, то есть пакет, который распределен по нескольким пакетам. Разумеется, разделение пакетов не рекомендуется.
Я считаю, что Import-Package дает более слабую связь и должен быть предпочтительнее. Я использую его при объявлении зависимостей от пакетов, которыми я не владею, таких как slf4j, и могу менять реализации по своему желанию. Я использую Require-Bundle, когда зависимость - это то, что я контролирую, например, мои собственные пакеты, потому что любое важное изменение все равно прошло бы через меня.