「クラシック」Java EEプロジェクト、IBM websphere 8.0.0.5を使用して、Mavenマルチモジュールプロジェクトに変換しようとしていますが、IBMの依存関係に関する問題に直面しています。
以下のパッケージのIBMクラスを使用します。
ローカルプロジェクトをコンパイルするために、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.tools
dependency(機能しません)を使用して、すべてのWebspherejarを一度に提供する簡単な方法はありませんか?
これが解決策なので、依存関係の問題を解決しました。
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ファイルを手作業でコピーすることにより、「より手動」の方法で問題を解決するのに役立ちました。
一般に、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
であるため、コンパイルにはこれを使用する必要があるようです。
スクリーンショットに示すように、Javaバージョン1.8.0_101で実行されているMavenバージョン3.3.9を使用してプロジェクトをビルドしようとしたときに、この問題に直面していました。
これが私がそれを解決した方法です:ステップ1。commonj.jarを ここ からダウンロードします。 ステップ2。コマンドプロンプトでmvn -version
と入力して、Mavenが使用しているJDKを判別します。
ステップ3。以下に示すように、そのディレクトリに移動し、commonj.jar
ファイルをjre/lib/ext
ディレクトリに配置します。これで、プロジェクトは問題なくMavenでビルドできるはずです。