11

私は現在、OSGi + Equinox で見つけた Web チュートリアルを Mavenize しようとして、OSGi ベースのアプリケーション (Equinox を使用) を開発しています。このプロジェクトでは、他のバンドルに依存するバンドルがあります (見積もりサービスは見積もりに依存します)。コンパイル フェーズは成功しますが、パッケージ フェーズは成功しません。Mavenは次のように不平を言います:

[情報] [バンドル:バンドル]
[エラー] バンドル de.vogella.osgi:quote-service:bundle:0.0.1 の構築中にエラーが発生しました: Bundle-Classpath[Jar:dot] 上のクラスによる [de.vogella.osgi.quote] への未解決の参照: [de/vogella/osgi/quoteservice/Activator.class, de/vogella/osgi/quoteservice/QuoteService.class]
[エラー] バンドル構成でエラーが見つかりました

私は問題を理解していますが、それを機能させる方法がわかりません。これは引用のポンです:

<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/maven-v4_0_0.xsd">

<parent>
    <artifactId>osgi-first-app</artifactId>
    <groupId>de.vogella.osgi</groupId>
    <version>0.0.1</version>
</parent>

<modelVersion>4.0.0</modelVersion>
<groupId>de.vogella.osgi</groupId>
<artifactId>quote</artifactId>
<packaging>bundle</packaging>
<name>Quote Bundle</name>
<version>0.0.1</version>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>1.4.3</version>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                    <_include>src/main/resources/META-INF/MANIFEST.MF</_include>
                </instructions>
            </configuration>
        </plugin>
    </plugins>
</build>
</project>

および見積もりの​​バンドル マニフェスト:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Quote Plug-in
Bundle-SymbolicName: de.vogella.osgi.quote
Bundle-Activator: de.vogella.osgi.quote.Activator
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Import-Package: org.osgi.framework;version="1.3.0"
Export-Package: de.vogella.osgi.quote

次に、quote-service の pom :

<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/maven-v4_0_0.xsd">

<parent>
    <artifactId>osgi-first-app</artifactId>
    <groupId>de.vogella.osgi</groupId>
    <version>0.0.1</version>
</parent>

<dependencies>
    <dependency>
        <groupId>de.vogella.osgi</groupId>
        <artifactId>quote</artifactId>
        <version>0.0.1</version>
        <type>bundle</type>
    </dependency>
</dependencies>

<modelVersion>4.0.0</modelVersion>
<groupId>de.vogella.osgi</groupId>
<artifactId>quote-service</artifactId>
<packaging>bundle</packaging>
<name>Quote Service Bundle</name>
<version>0.0.1</version>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>1.4.3</version>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                    <_include>src/main/resources/META-INF/MANIFEST.MF</_include>
                </instructions>
            </configuration>
        </plugin>
    </plugins>
</build>
</project>

最後に、quote-service のマニフェスト:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Quoteservice Plug-in
Bundle-SymbolicName: de.vogella.osgi.quoteservice
Bundle-Activator: de.vogella.osgi.quoteservice.Activator
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Import-Package: org.osgi.framework;version="1.3.0", \
 de.vogella.osgi.quote;version="0.0.1"

何か問題がありますか?前もって感謝します !

4

3 に答える 3

12

答えは非常に簡単です。定義済みのマニフェストを削除し、バンドル プラグインの説明で bnd エントリを使用しました。それはうまくいきます!

于 2008-12-18T11:26:17.307 に答える
3

Tychoは、この種の問題を処理するように設計されています。

于 2009-04-19T02:21:59.167 に答える
1

auto-builder というツールを作成しました: http://code.google.com/p/auto-builder。PDE ベースのプロジェクトをイントロスペクトし、Ant ビルド ファイルを生成します。依存関係とそのすべてのジャズに対する推移的閉鎖をサポートします。

http://empty-set.net/?p=9という記事を投稿しました。これを書いたのは、私が遊んだ Maven ツールが、PDE と統合されたときに「うまく機能しなかった」からです。基本的に、私は PDE でコーディングを行い、ハドソン ベースの CI をその間に何の手間もかけずに作成したいと考えていました。

Ant ファイルを生成すると、宣言型ビルド ツールのすべての利点が得られるので便利ですが、Ant ファイルが何を行っているかの手続き的な説明が必要になります。

テストする PDE ベースのプロジェクトをさらに探しています。いくつかの RFC-0112 Bundle リポジトリがあり、依存関係をダウンロードするためのコードがいくつかあります。誰かが興味を持っている場合は、依存関係のダウンロードを自動ビルダーと統合できます。

于 2011-03-06T03:00:15.370 に答える