0

サードパーティのライブラリを使用するアプリケーションを作成しました。次に、これを maven-assembly-plugin を使用して実行可能な jar としてパッケージ化しました (一部のサードパーティ jar を含むすべての依存関係を持つ jar を生成します)。

次に、Eclipse から起動できるように、この jar を PDE プロジェクトに追加する必要があります。しかし、これを機能させるには、サードパーティの依存関係の一部を、パッケージ化された jar に既にある PDE プロジェクトに追加する必要があります。そのため、依存関係が重複しています。これを回避する方法についてのアイデアはありますか?または、これが適切に行われる方法を説明するドキュメントへの提案はありますか?

4

3 に答える 3

1

OSGi バンドルである jar をビルドする必要があります。そのため、必要な manifest.mf とプラグイン ID およびバージョン番号が含まれています (これは、jar が実行可能なままであるという事実を変更しません)。export-packages オプションを追加して、他のプラグイン/バンドルでもコードを利用できるように注意してください。

その後、この jar を PDE プロジェクトで使用されるターゲット プラットフォームにインストールすると (設定でターゲット プラットフォームを検索)、ID によって他のプラグインで使用できるようになります (依存関係として追加できます)。

この方法では、少なくとも 1 つのプラグインが jar を必要とする場合、それが読み込まれますが、何度も読み込まれることはありません。

于 2010-06-11T19:03:54.760 に答える
0

jar に他の jar を含めるのは、単なる悪い習慣だと思います。しかし、それを維持したい場合は、1 つのビルドから 2 つの jar を作成するのはどうでしょうか。依存関係のある完全なものと、PDE で使用する単純なもの (アセンブリ プラグインで複数の実行を使用するだけです)。

于 2010-06-11T07:38:51.013 に答える
0

私は今maven-bundle-pluginを使用しています:

      <plugin>
          <groupId>org.apache.felix</groupId>
          <artifactId>maven-bundle-plugin</artifactId>
          <version>1.4.0</version>
          <extensions>true</extensions>
          <configuration>
              <instructions>
                  <Bundle-SymbolicName>${pom.groupId}.${pom.artifactId}</Bundle-SymbolicName>
                  <Bundle-Name>${pom.name}</Bundle-Name>
                  <Bundle-Version>${pom.version}</Bundle-Version>
                  <Bundle-Activator>org.wso2.mbp.sample01.Activator</Bundle-Activator>
                  <Private-Package>org.wso2.mbp.sample01</Private-Package>
              </instructions>
          </configuration>
      </plugin> 

http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html

バンドルを構築します。しかし、バンドル プラグインを使用して、maven-assembly-plugin を使用して jar ビルド用の MANIFEST ファイルを作成するにはどうすればよいですか。

    <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
      <appendAssemblyId>true</appendAssemblyId>
      <finalName>myApp</finalName>

      <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
      </descriptorRefs>         
      <archive>
        <manifest>
          <mainClass>com.TestMain</mainClass>                     
          <packageName>com.</packageName>
        </manifest>
      </archive>    
    </configuration>
    <executions>
      <execution>
        <id>make-assembly</id>
        <phase>package</phase>
        <goals>
          <goal>assembly</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
于 2010-06-12T14:00:27.677 に答える