6

私は Tycho を使い始めたばかりで、早い段階で困惑しています。多分私は何かを誤解しているかもしれませんので、念のため、これが私が期待していることです: OSGi スタイル (つまりMANIFEST.MFvia Import-Package) でバンドルのニーズを定義し、Tycho は何らかの方法でその情報をその場で使用し、すべてを再定義する必要はありません。 Maven スタイル (つまり、依存関係を pom.xml に入れる必要はありません)。

そこで、Eclipse で m2eclipse プラグイン、m2eclipse-tycho アドオン、および PDE プラグインを使用して単純な Maven プロジェクトを作成し、次の Tycho のものを pom に入れました。

<properties>
    <tycho-version>0.15.0</tycho-version>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>tycho-maven-plugin</artifactId>
            <version>${tycho-version}</version>
            <extensions>true</extensions>
        </plugin>
    </plugins>
</build>

奇妙な構成エラーに苦労し、最終的に Eclipse でエラーや警告を出さない、本質的に空のプロジェクト (つまり、ソース コードがない) を取得しました。次に、別のプロジェクトからソース コードをコピーしたところ、(予想どおり) 依存関係が見つからないために多数のコンパイラ エラーが発生しました。最初のものは org.jboss.netty.channel からの AbstractChannel でした。私は Netty のバージョン 3.5.1.Final を使用しているので、MANIFEST.MF を編集して以下を含めました。

Import-Package: org.jboss.netty.channel;version="[3.5.1,4)"

次に、Tycho が魔法のように Netty が必要であることを理解し、Maven の pom.xml に次のようなものを挿入したかのように振る舞うことを期待していました。

<dependency>
    <groupId>org.jboss.netty</groupId>
    <artifactId>netty</artifactId>
    <version>3.5.1.Final</version>
</dependency>

代わりに、Eclipse で 1 つの余分なエラーが発生しただけでした。

Unsatisfied constraint: 'Import-Package: org.jboss.netty.channel;version="[3.5.1,4.0.0)"

ここからどこへ行けばいいのかわからない。Tycho が何をすべきかについて根本的な誤解がありますか? Import-Packageまたは、エントリMANIFEST.MFから<dependency>pom.xmlエントリへの「魔法の」変換を実行できるようにするために、他に設定する必要があるものはありますか? または、他の何か?

前もって感謝します。

4

3 に答える 3

3

あなたの理解はすでにかなり良いですが、小さいながらも重要な部分が欠けています。Mavenとは異なり、Tychoには正規のデフォルトリポジトリ(「中央」など)はありません。TychoがOSGiの依存関係を解決するために検索する場所を構成する必要があります。

この検索範囲は、Tychoでは「ターゲットプラットフォーム」と呼ばれています。さまざまな方法があるため、ターゲットプラットフォームにアーティファクトを含めます。最も簡単な方法は、POMに依存関係を含むp2リポジトリを追加の<layout>p2</layout>属性で構成することです(依存関係を含むp2リポジトリを知っていると仮定します)。

于 2012-08-29T10:04:09.000 に答える
3

ええ、さらにいくつかのハードルがあります。

つまり、依存関係を取得できるリポジトリを Tycho に提供する必要があります。

もう少し詳しく:

  • ターゲット プラットフォームをセットアップし、それを Tycho に渡す必要があります。何らかの方法でターゲット プラットフォームを既にセットアップしていると思います。そうしないと、Eclipse も Netty が見つからないと文句を言うでしょう。
  • Tycho もそれにアクセスできるように、ワークスペースでターゲット プラットフォームを共有してください。
  • このようにそのターゲット プラットフォームを使用するよう Tycho に指示します。
  • Tycho 互換のターゲット プラットフォームは p2 レイアウトのみをサポートするため、単純なディレクトリはサポートされません。しばらく前に尋ねたように、そのような p2 リポジトリを作成する最善の方法が何であるかはわかりません。答えはまったくありませんが、私にとって何が(ある種の)効果があるかを説明しています。

お役に立てば幸いです、フランク

于 2012-08-28T22:35:45.887 に答える