IBM Websphere 包的 Maven 依赖项
Maven dependencies for IBM Websphere packages
我正在尝试将使用 IBM websphere 8.0.0.5 的 "classic" JAVA EE 项目转换为 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
为了编译我的本地项目,我从 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
,所以看起来您需要使用它来编译。
这是我解决依赖性问题的解决方案:
- 我将公司存储库管理器 (nexus) 配置为镜像。在这个关系中,所有 ibm 包都存在。如您所想,这解决了主要问题。
- 然后我按照常见的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 中构建没有任何问题。
我正在尝试将使用 IBM websphere 8.0.0.5 的 "classic" JAVA EE 项目转换为 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
为了编译我的本地项目,我从 IBM 下载了 was.installer-8.0.0.pm 并使用
安装到我的 Mavenmvn 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
,所以看起来您需要使用它来编译。
这是我解决依赖性问题的解决方案:
- 我将公司存储库管理器 (nexus) 配置为镜像。在这个关系中,所有 ibm 包都存在。如您所想,这解决了主要问题。
- 然后我按照常见的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 中构建没有任何问题。