Включить зависимости времени выполнения в karaf: features-generate-descriptor

У меня есть проект OSGi, который включает зависимость sesame-runtime-osgi с областью компиляции.

<dependency>
    <groupId>org.openrdf.sesame</groupId>
    <artifactId>sesame-runtime-osgi</artifactId>
    <version>${sesame.version}</version>
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>

Артефакт sesame-runtime-osgi включает несколько зависимостей времени выполнения. Например:

+- org.openrdf.sesame:sesame-runtime-osgi:jar:2.7.13:compile
|  +- org.openrdf.sesame:sesame-http-client:jar:2.7.13:compile
|  |  +- org.openrdf.sesame:sesame-http-protocol:jar:2.7.13:compile
|  |  |  \- org.openrdf.sesame:sesame-rio-ntriples:jar:2.7.6:compile
|  |  |     \- commons-io:commons-io:jar:2.1:compile
|  |  +- org.openrdf.sesame:sesame-query:jar:2.7.13:compile
.
.
.
|  |  \- commons-codec:commons-codec:jar:1.4:runtime
|  \- org.openrdf.sesame:sesame-http-server-spring:jar:2.7.13:compile
|     +- org.openrdf.sesame:sesame-runtime:jar:2.7.6:compile
|     |  +- org.openrdf.sesame:sesame-repository-manager:jar:2.7.13:compile
.
.
.
|     |  +- org.openrdf.sesame:sesame-queryresultio-sparqljson:jar:2.7.13:runtime
|     |  |  \- com.fasterxml.jackson.core:jackson-core:jar:2.2.2:runtime
|     |  +- org.openrdf.sesame:sesame-queryresultio-text:jar:2.7.13:runtime
|     |  |  \- net.sf.opencsv:opencsv:jar:2.0:runtime
.
.
.
|     \- cglib:cglib:jar:2.2:compile
|        \- asm:asm:jar:3.1:compile

Вы заметите, что "net.sf.opencsv: opencsv: jar: 2.0" является зависимостью времени выполнения, поэтому он не включен в файл feature.xml, созданный плагином karaf-maven-plugin. К сожалению, пакет, необходимый во время выполнения , включен в директиву Import-Packages в манифесте sesame-runtime-osgi:

Import-Package: au.com.bytecode.opencsv

поэтому Karaf не сможет развернуть эту функцию, если я вручную не заверну и не разверну зависимости времени выполнения. Очевидно, я не хочу этого делать.

Есть ли способ включить зависимости с областью выполнения в генерацию feature.xml?

Спасибо


person user3590294    schedule 23.01.2015    source источник
comment
поскольку вы не говорите, какую версию плагинов Karaf maven вы используете, вы: а) пробовали с 3.0.2, б) последний снимок и в) обычно лучше спросить в списке рассылки для karaf.   -  person Achim Nierbeck    schedule 24.01.2015
comment
Извините, я пробовал это с 3.0.2 и 4.0.0.M1. Нечто подобное происходит с maven-shade-plugin, но это исправлено. с помощью ServicesResourceTransformer. Я только что отправил сообщение в список пользователей. Спасибо за совет!   -  person user3590294    schedule 26.01.2015


Ответы (2)


Если вы создаете свой файл features.xml с использованием стандартного mojo Karaf, вы можете создать файл шаблона функций в src / main / features / features.xml. Все, что вы добавляете в этот шаблон, появится в вашем окончательно сгенерированном файле features.xml. При необходимости вы можете жестко закодировать зависимости времени выполнения в шаблоне.

Вы можете указать каждую транзитивную зависимость вручную в файле pom. Предположительно, это тоже сработает?

person Richard    schedule 04.02.2015

Чтобы продолжить ответ Ричарда, файл шаблона должен находиться в

src/main/feature/feature.xml

НЕТ

src/main/features/features.xml

Внутри файла шаблона feature.xml вы можете включать пакеты зависимостей и функции, которые будут объединены с созданными. Например.

<?xml version="1.0" encoding="UTF-8"?>
<features name="${project.artifactId}-${project.version}">
  <feature name="${project.artifactId}" description="${project.name}" version="${project.version}">
    <bundle>mvn:net.sf.opencsv/opencsv/2.0</bundle>
  </feature>
</features>
person Lorin Metzger    schedule 22.01.2016