IBM Websphere 包的 Maven 依赖项

Maven dependencies for IBM Websphere packages

我正在尝试将使用 IBM websphere 8.0.0.5 的 "classic" JAVA EE 项目转换为 Maven 多模块项目并面临 IBM 依赖项问题。

我们使用来自以下软件包的 IBM 类:

为了编译我的本地项目,我从 IBM 下载了 was.installer-8.0.0.pm 并使用

安装到我的 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)。看来我需要为每一件事添加更多的 .jars。有没有更简单的方法来一次提供所有 websphere jar,如上面链接教程中所述 com.ibm.tools 依赖项(不起作用)?

一般来说,com.ibm.websphere 是 public API 供应用程序使用(这对您上面列出的软件包来说是正确的)这与 [=11= 中的这些是一致的]

但是,com.ibm.ws包通常是产品内部构件。请问您使用的是com.ibm.ws.asynchbeans包中的哪些接口方法?也许有 public API 替代方案。

关于 commonj.work,我在 WebSphere Application Server 产品图像中唯一能找到它的地方是 WAS/plugins/com.ibm.ws.prereq.commonj-twm.jar,所以看起来您需要使用它来编译。

这是我解决依赖性问题的解决方案:

  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>

抱歉,我无法提供所有人都可以使用的 "nice" 解决方案,但 njr 的答案和 BevynQ[= 的评论26=] 帮助我们更清楚地解决了问题,并通过手动复制所需的 jar 以 "more manual" 的方式帮助解决了问题。

我在尝试使用 Maven 版本 3.3.9、运行 在 Java 版本 1.8.0_101 上构建项目时遇到了这个问题,如屏幕截图所示:

我是这样解决的:第 1 步。here 下载 commonj.jar。 步骤 2. 通过在命令提示符中键入 mvn -version 来确定您的 Maven 使用的 JDK。

步骤 3. 转到该目录并将 commonj.jar 文件放在 jre/lib/ext 目录中,如下所示。现在你的项目应该在 maven 中构建没有任何问题。