0

私は乙女座で OSGi アプリを開発しており、maven bundlor を使用してバンドルを構築しています。バンドルのインポートといくつかのパッケージのインポートを含む乙女座で使用されるものを使用したいのですが、bundlor はバンドルで使用されるクラスを自動検出し、ヘッダーMANIFEST.MFのバンドルからのものを含むそれらのパッケージのインポートを生成します。Import-Bundle

MANIFEST.MFすでにビルドされているものを使用するか、Java タイプの自動検出を無効にするようにbundlorに指示する方法はありますか?

4

1 に答える 1

4

では、bundlor を使用しないでください。ドキュメントで述べたように、「Bundlor の主な機能は、既存の JAR ファイルをスキャンし、実行時の依存関係を判断することです。」

たとえば、maven-bundle-plugin の場合 (この例では .war ファイルがありますが、それは問題ではありません)

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <archive>
          <!-- add the generated manifest to the war -->
          <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
        </archive>
        <failOnMissingWebXml>true</failOnMissingWebXml>
        <packagingExcludes>WEB-INF/web.xml</packagingExcludes>  
    </configuration>
</plugin>
<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <extensions>true</extensions>
    <executions>
      <execution>
        <id>bundle-manifest</id>
        <phase>process-classes</phase>
        <goals>
          <goal>manifest</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
        <supportedProjectTypes>
          <supportedProjectType>jar</supportedProjectType>
          <supportedProjectType>bundle</supportedProjectType>
          <supportedProjectType>war</supportedProjectType>
        </supportedProjectTypes>
        <instructions>
            <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
            <Bundle-ClassPath>.,WEB-INF/classes,{maven-dependencies}</Bundle-ClassPath>
            <Bundle-ManifestVersion>2</Bundle-ManifestVersion>
            <Embed-Directory>WEB-INF/lib</Embed-Directory>
            <Embed-Dependency>*;scope=compile|runtime</Embed-Dependency>
            <Embed-Transitive>true</Embed-Transitive>
            <Import-Package>
              javax.annotation,
              javax.servlet;version="[2.5,3.0]",
              javax.servlet.http;version="[2.5,3.0]",
              org.osgi.service.http,
              org.osgi.service.packageadmin,
              org.osgi.framework;version="[1.5,2.0)",
              org.jboss.logging;version="[3.0,4.0)"
            </Import-Package>
            <Private-Package>fi.eis.applications</Private-Package>
            <Web-ContextPath>/spring-app</Web-ContextPath>  
        </instructions>
    </configuration>
</plugin>

maven-bundle-plugin も未定義のままにして、マニフェスト ファイルを WEB-INF に配置することもできました。

于 2012-12-28T07:16:46.943 に答える