web-dev-qa-db-ja.com

IBMWebsphereパッケージのMaven依存関係

「クラシック」Java EEプロジェクト、IBM websphere 8.0.0.5を使用して、Mavenマルチモジュールプロジェクトに変換しようとしていますが、IBMの依存関係に関する問題に直面しています。

以下のパッケージのIBMクラスを使用します。

  • com.ibm.websphere.asynchbeans
  • com.ibm.websphere.scheduler
  • com.ibm.websphere.ce.cm
  • com.ibm.ws.asynchbeans
  • com.ibm.ws.util.ThreadPool

ローカルプロジェクトをコンパイルするために、was.installer-8.0.0.pmを [〜#〜] ibm [〜#〜] からダウンロードし、を使用してMavenにインストールしました。

mvn install -f "was.installer-8.0.0.pom" -D serverInstallationFolder="C:\Program Files (x86)\IBM\WebSphere\AppServer"

このステップは、コマンドライン出力に従って成功しました。

次に、IBMの説明に従って、次の依存関係をプロジェクトに追加しました。

親の場合:

<dependency>
 <groupId>com.ibm.tools.target</groupId>
 <artifactId>was</artifactId>
 <version>8.0.0</version>
 <type>pom</type>
 <scope>provided</scope>
</dependency>

モジュール内:

 <dependency>
   <groupId>com.ibm.tools.target</groupId>
   <artifactId>was</artifactId>
 </dependency>      

しかし、IBMパッケージが見つからないため、プロジェクトをコンパイルできません。

誰かが私が犯した間違いを見つけて修正するのを手伝ってくれる?

編集

コメントからBevynQのヒントに従った後、「was_public.jar」を「was_public-8.0.0.jar」( IBM here で説明)にコピーし、リポジトリに追加しました。

mvn install:install-file -Dfile="C:\Program Files (x86)\IBM\WebSphere\AppServer\dev\was_public-8.0.0.jar" -DpomFile="C:\Program Files (x86)\IBM\WebSphere\AppServer\dev\was_public-8.0.0.pom"

次に、依存関係を次のように変更しました。

<dependency>
 <groupId>com.ibm.websphere.appserver</groupId>
 <artifactId>was_public</artifactId>
 <version>8.0.0</version>
 <scope>provided</scope>
</dependency>

 <dependency>
   <groupId>com.ibm.websphere.appserver</groupId>
   <artifactId>was</artifactId>
 </dependency>    

これは、com.ibm.websphereへのインポートのコンパイルエラーを実行するのに役立ちました。

私が今も開いているのはパッケージcom.ibm.ws.*パッケージです。誰かアイデアがありますか?

編集2次の依存関係を追加し、com.ibm.ws.*インポートエラーを取り除きました。

<dependency>
  <groupId>com.ibm.websphere.ws</groupId>
  <artifactId>com.ibm.ws.runtime</artifactId>
  <version>1.0.0</version>
</dependency> 

しかし、間接的に参照が見つからないため、コンパイルされません(私の場合はcommonj.work.WorkManager)。すべてのものに.jarを追加する必要があるようです。上記のリンクされたチュートリアルの説明として、com.ibm.toolsdependency(機能しません)を使用して、すべてのWebspherejarを一度に提供する簡単な方法はありませんか?

7
bish

これが解決策なので、依存関係の問題を解決しました。

  1. 会社のリポジトリマネージャー(nexus)をミラーとして構成しました。このネクサスには、すべてのibmパッケージが存在します。あなたが考えることができるように、それは主な問題を解決しました。
  2. 次に、一般的なMavenスタイルに従って次の依存関係を追加しました。

pom.xmlの依存関係(プロパティに抽出されたバージョン番号):

<dependency>
  <groupId>com.ibm.websphere.ws</groupId>
  <artifactId>com.ibm.ws.runtime</artifactId>
  <version>${ibm.ws.runtime.version}</version>
</dependency>


<dependency>
  <groupId>com.ibm.ws.prereq</groupId>
  <artifactId>commonj-twm</artifactId>
  <version>${ibm.ws.prereq.commonj-twm.version}</version>
</dependency>

申し訳ありませんが、すべての人が使用できる「素敵な」ソリューションを提供することはできませんが、njrからの回答とBevynQからのコメントは、問題をより明確にするのに大いに役立ちました。必要なjarファイルを手作業でコピーすることにより、「より手動」の方法で問題を解決するのに役立ちました。

1
bish

一般に、com.ibm.websphereはアプリケーションで使用するためのパブリックAPIであり(これは上記のパッケージに当てはまります)、これらがwas_public.jarにあることと一致しています。

ただし、com.ibm.wsパッケージは通常製品内部です。 com.ibm.ws.asynchbeansパッケージから使用しているインターフェースメソッドを聞いてもいいですか?たぶん、パブリックAPIの代替手段があります。

commonj.workに関して、WebSphere ApplicationServer製品イメージでこれを見つけることができる唯一の場所はWAS/plugins/com.ibm.ws.prereq.commonj-twm.jarであるため、コンパイルにはこれを使用する必要があるようです。

3
njr

スクリーンショットに示すように、Javaバージョン1.8.0_101で実行されているMavenバージョン3.3.9を使用してプロジェクトをビルドしようとしたときに、この問題に直面していました。

enter image description here

これが私がそれを解決した方法です:ステップ1。commonj.jarを ここ からダウンロードします。 ステップ2。コマンドプロンプトでmvn -versionと入力して、Mavenが使用しているJDKを判別します。 enter image description here

ステップ3。以下に示すように、そのディレクトリに移動し、commonj.jarファイルをjre/lib/extディレクトリに配置します。これで、プロジェクトは問題なくMavenでビルドできるはずです。

enter image description here

0
Ebony Maw