2017-04-14 22 views
0

私は移行のためのプロジェクトを持っています。現在、バージョンはCQ5.6です。 Mavenビルドが正常に展開されています。ただし、ビルド後、osgiのバンドルはインストールされた状態で表示されます。問題の原因となる2つの依存関係。OSGIバンドルの依存関係の問題

org.apache.felix.shell,version=[1.0,2) -- Cannot be resolved 

ビルド中に以下のエラーが発生しました。この問題を解決するには

ERROR

[INFO] --- maven-bundle-plugin:2.3.4:bundle (default-bundle) @ myPRJ-taglib --- 
[ERROR] Error building bundle com.mypack.deewealth:myPRJ-taglib:bundle:1.0.0-SNAPSHOT : Unresolved references to [org.apache.felix.shell] by class 
(es) on the Bundle-Classpath[Jar:dot, Jar:OSGI-INF/lib/recaptcha4j-0.0.8-kohsuke-1.jar, Jar:OSGI-INF/lib/commons-io-2.1.jar, Jar:OSGI-INF/lib/commons- 
lang-2.4.jar, Jar:OSGI-INF/lib/crx-packagemgr-1.0.22.jar, Jar:OSGI-INF/lib/squeakysand-osgi-0.4.0.jar, Jar:OSGI-INF/lib/jsoup-1.6.1.jar, Jar:OSGI-INF/ 
lib/stax-api-1.0-2.jar, Jar:OSGI-INF/lib/org.apache.sling.settings-1.1.0.jar, Jar:OSGI-INF/lib/cq-compat-runmode-0.2.0.jar, Jar:OSGI-INF/lib/commons-c 
ollections-3.2.1.jar, Jar:OSGI-INF/lib/squeakysand-jsp-0.4.0.jar, Jar:OSGI-INF/lib/squeakysand-commons-0.4.0.jar]: [org/apache/sling/settings/impl/Run 
ModeCommand.class] 

我々はimport文の下に 依存

<dependency> 
    <groupId>org.apache.felix</groupId> 
    <artifactId>org.apache.felix.shell</artifactId> 
    <version>1.4.2</version> 
    <scope>provided</scope> 
</dependency> 

に追加ように私は、のpom.xmlに依存下に追加。その後

<Import-Package> 
    .... 
    .... 
    org.apache.felix.shell 
</Import-Package> 

、ビルドは成功しましたが、バンドルがあるため

org.apache.felix.shell,version=[1.0,2) -- Cannot be resolved 

の解決された状態で、なぜこれが問題を引き起こしている任意の提案でした。

答えて

1

org.apache.felix.shell,version=[1.0,2) -- Cannot be resolved は、これらのfelixパッケージをAEMから使用しようとしていることを意味します。 ただし、これらのパッケージをエクスポートするAEMにはOSGiバンドルはありません。
maven repoからバンドルをダウンロードし、AEM Felix consoleにアップロードして使用できます。

または、モジュールの1つとして親pom依存関係を作成して、プロジェクトjarと一緒に折り返して使用することができます。

AEM Felix

任意のパッケージとの依存関係AEM Dependency finderを使うの可用性をveifyします。

AEM Dependency Finder

2

私はCQを知らないが、なぜこれが一般的に起こるのか説明できる。依存関係がないため、ビルド中にエラーが発生しました。ビルドを修正した依存関係を追加することで、正しく解決しました。あなたのバンドルは、必要な情報(インポート)org.apache.felix.shell,version=[1.0,2)パッケージで更新され、そのパッケージは実行時に他のバンドルによって提供されます。

実行時にリゾルバはその情報を取得し、org.apache.felix.shell,version=[1.0,2)パッケージを(エクスポートして)提供するバンドルを見つけようとしました。それは1つを見つけることができなかったので、解決は失敗し、あなたのバンドルはinstalledに残っていた(私はあなたが最後のセンテンスでresolvedのinstaedを書くことを意味したと信じている)州!

これを解決するには、実行時にorg.apache.felix.shell,version=[1.0,2)パッケージが利用可能であることを確認する必要があります。私はCQとその中にバンドルをインストールする方法を知らないが、あなた自身のバンドルをインストールできるので、同じ方法でorg.apache.felix.shellバンドルをインストールすることもできます。

0

それが存在しない場合がありますいくつかのjarファイルに依存するため、インストールされているシェルジャーは、まだ未解決です。すべての依存関係の深みを見つけて解決する必要があります。