2012-05-02 8 views
1

私はosgiバンドルであるプロジェクトでquerydslを使用しようとしています。osgiでQueryDSLを使用する

Error executing command: Unresolved constraint in bundle com.mypackage.package [163]: Unable to resolve 163.0: missing requirement [163.0] package; (&(package=com.mysema.query.jpa)(version>=2.5.0)(!(version>=3.0.0))) 

I:私は私が手にバンドルを起動しようとすると

 <plugin> 
      <groupId>com.mysema.maven</groupId> 
      <artifactId>maven-apt-plugin</artifactId> 
      <version>0.3.2</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>process</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>target/generated-sources/java</outputDirectory> 
         <processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    <plugin> 
      <groupId>org.ops4j</groupId> 
      <artifactId>maven-pax-plugin</artifactId> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.felix</groupId> 
      <artifactId>maven-bundle-plugin</artifactId> 
      <extensions>true</extensions> 
      <!-- | the following instructions build a simple set of public/private 
       classes into an OSGi bundle --> 
      <configuration> 
       <instructions> 
        <Import-Package>com.mysema.query.jpa,*</Import-Package> 
        <Export-Package>com.mypackage.package.*;version="${project.version}"</Export-Package> 
       </instructions> 
      </configuration> 
     </plugin> 

それでも

<dependency> 
     <groupId>com.mysema.querydsl</groupId> 
     <artifactId>querydsl-apt</artifactId> 
     <version>2.5.0</version> 

    </dependency> 

    <dependency> 
     <groupId>com.mysema.querydsl</groupId> 
     <artifactId>querydsl-jpa</artifactId> 
     <version>2.5.0</version> 
    </dependency> 

としてだけでなく、プラグイン: 私のpom.xmlには、以下の依存関係を持っていますquerydslの古いバージョンを使用していたが、明らかに彼らはstuff about osgiを修正したので、私はアップグレードした。問題は解決しません。

querydslがosgi内で動作するために欠けているものは何ですか?

+0

querydsl-jpaバンドルには、多くの依存関係(直接的および一時的な)があります。これらのバンドルをすべてロードしてquerydsl-jpaバンドルがSTARTEDであると仮定していますか? – earcam

+0

番号。あなたが正しいです。私はosgiの新人です。私はosgi:instal mvn .....をkarafコンソールに置いて、すべての依存関係を解決すると仮定しました。明らかにではない – santiagozky

答えて

2

各依存関係を手作業でインストールするのは苦労しますが、AFAIKには何もありません。すべての依存関係を元に戻すことはできません。

pax-loggingがインストールされていても、すべてのバージョンのすべてのロギングフレームワーク、または間違った実装になる可能性があります。

現在のところ、mavenのケースでは、semantic versioning以上のレベルを適用する方法はありませんrequirement and capabilityです。 (BND(maven-bundle-plugin、bndtools)はコードレベルでいくつかの賢明な仮定をしていますが)

Karafの機能(配布の$ {KARAF_HOME}のPDFマニュアルを参照)はこれを緩和するのに大変役立ちますセットアップするいくつかの作業。フィーチャファイルを生成するには、少なくとも2つの方法があります。

  1. あなたは手作りXMLファイルパブリッシュするのmaven-ビルドヘルパープラグインを使用します(面倒をしかし、あなたは、リソースのフィルタリングを使用してバージョンを維持することができます)features-maven-plugin
  2. を使用してください。
+0

features-maven-plugin generate-features-xmlは非常に役に立ちました。それは私の問題を完全には解決しませんでしたが、少なくとも半分は私にかかっていました。ありがとうございました – santiagozky

+0

私はほとんどの人が同じ位置にいると思います。幸いにも、OSGi Allianceはこれを解決するために取り組んでいます。喜んで助けた=) – earcam

関連する問題