1

osgi バンドルであるプロジェクトで querydsl を使用しようとしています。私の pom.xml には次の依存関係があります。

    <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>

プラグインだけでなく

        <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>

それでもバンドルを開始しようとすると、次のようになります。

 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)))

古いバージョンの querydsl を使用していましたが、最近osgi に関するいくつかの問題が修正されたようで、アップグレードしました。問題は解決しません。

querydsl が osgi 内で機能するために何が欠けていますか?

4

1 に答える 1

2

各依存関係を手動でインストールするのは面倒ですが、AFAIKには、Mavenアーティファクトを取り戻し、すべての依存関係をチェーンバックするものはありません。これは、どこで停止するので失敗しますか?

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

残念ながら、Mavenの場合、現在、セマンティックバージョニングまたはより高いレベルの要件と機能を適用する方法はありません。(BND(maven-bundle-plugin、bndtools)は、コードレベルでいくつかの賢明な仮定をしますが)

Karafの機能(ディストリビューションの$ {KARAF_HOME}のPDFマニュアルを参照)は、これを軽減するために多くのことを行うことができますが、セットアップにいくらかの作業が必要になる場合があります。機能ファイルを生成する方法は(少なくとも)いくつかあります。

  1. features-maven-pluginを使用する
  2. maven-build-helperプラグインを使用して、手作りしたXMLファイルを公開します(面倒ですが、リソースフィルタリングを使用してバージョンを維持できます)。
于 2012-05-03T18:49:50.723 に答える