Как получить maven-bundle-plugin для включения зависимостей maven в манифест OSGi ‹Import-Package›

Надеюсь, что кто-то может помочь мне с этой проблемой. Я пытаюсь использовать maven-bundle-plugin для автоматического создания моего манифеста OSGi из моих зависимостей maven. Некоторые зависимости я устанавливаю в контейнере OSGi, поскольку они используются в нескольких пакетах. Например, Весна. Я устанавливаю объем этих зависимостей, как указано (поскольку они предоставляются внутри контейнера, а не встраиваются). Однако я не могу заставить maven-bundle-plugin включать эти зависимости в раздел манифеста. Есть идеи, как это сделать?

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.osgi.test</groupId>
<artifactId>spring-mvc-bundle</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>

<properties>
    <spring.version>3.0.5.RELEASE</spring.version>
    <spring.osgi.version>1.2.1</spring.osgi.version>
</properties>

<!-- Module dependencies -->
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
        <scope>provided</scope> 
    </dependency>
    <!-- Other dependencies here... -->
</dependencies>

<!-- Build plugins + config -->
<build>
    <plugins>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.2</version>
            <executions>
                <execution>
                    <id>create-war</id>
                    <phase>package</phase>
                    <goals>
                        <goal>war</goal>
                    </goals>
                </execution>
            </executions>

            <configuration>
                <archive>
                    <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
                </archive>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>2.3.5</version>
            <executions>
                <execution>
                    <id>bundle-manifest</id>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>manifest</goal>
                    </goals>
                </execution>
            </executions>
            <extensions>true</extensions>
            <configuration>
                <supportedProjectTypes>
                    <supportedProjectType>war</supportedProjectType>
                    <supportedProjectType>jar</supportedProjectType>
                    <supportedProjectType>bundle</supportedProjectType>
                </supportedProjectTypes>
            </configuration>
        </plugin>
    </plugins>
</build>


person user1654497    schedule 07.09.2012    source источник
comment
Разве вы не архивируете с помощью стандартного архиватора вместо плагина пакета? Вы следовали инструкциям на странице плагина пакета?   -  person Peter Kriens    schedule 09.09.2013


Ответы (1)


Это сильно зависит от того, как вы используете эти зависимости. Если они используются с динамической загрузкой классов, инструмент bnd не знает, как с ними справиться. Поэтому вам нужно добавить эти зависимости в раздел вашей конфигурации. Таким образом, они добавляются в ваш Манифест как Импорты в дополнение к уже найденным Импортам.

person Achim Nierbeck    schedule 22.10.2012