Java IBM Websphere包的Maven依赖项
我正在尝试使用IBMWebSphere8.0.0.5将一个“经典”JavaEE项目转换为一个maven多模块项目,并面临与IBM相关的问题 我们使用以下包中的IBM类:Java IBM Websphere包的Maven依赖项,java,maven,websphere-8,Java,Maven,Websphere 8,我正在尝试使用IBMWebSphere8.0.0.5将一个“经典”JavaEE项目转换为一个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
- com.ibm.websphere.asynchbeans
- com.ibm.websphere.scheduler
- com.ibm.websphere.ce.cm
- com.ibm.ws.asynchbeans
- com.ibm.ws.util.ThreadPool
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.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>
但它仍然无法编译,因为现在无法找到间接引用(在我的例子中是
commonj.work.WorkManager
)。看来我需要再加一点,每件事都要用罐子。是否有一种更简单的方法可以像上面链接的教程中所描述的那样,一次提供所有websphere JAR,并使用com.ibm.tools
依赖项(不起作用)?一般来说,com.ibm.websphere
是供应用程序使用的公共API(上面列出的包也是如此)这与was\u public.jar中的内容一致
然而,com.ibm.ws
包通常是产品内部的。请问您在com.ibm.ws.asynchbeans
包中使用什么接口方法?也许有一个公共API替代品
关于commonj.work
,我在WebSphere Application Server产品映像中唯一能找到它的地方是WAS/plugins/com.ibm.ws.prereq.commonj twm.jar
,所以看起来您需要使用它来编译。以下是解决方案,因此我解决了依赖性问题:
我将公司存储库管理器(nexus)配置为镜像。在这个nexus中,所有ibm软件包都存在。正如你所想,这解决了主要问题
然后,我根据common maven样式添加了以下依赖项:
pom.xml中的依赖项(提取到属性的版本号):
com.ibm.websphere.ws
com.ibm.ws.runtime
${ibm.ws.runtime.version}
com.ibm.ws.prereq
commonj twm
${ibm.ws.prereq.commonj twm.version}
很抱歉,我无法提供一个所有人都可以使用的“好”解决方案,但njr的回答和BevynQ的评论帮助lot更清楚地了解问题,并通过手动复制所需的JAR帮助以“更手动”的方式解决问题。我在尝试使用Maven版本3.3.9构建项目时遇到了这个问题,在Java版本1.8.0_101上运行,如屏幕截图所示:
我就是这样解决的:步骤1。从下载commonj.jar。
步骤2。通过在命令提示符中键入mvn-version
来确定您的Maven正在使用哪个JDK
步骤3。转到该目录,将commonj.jar
文件放在jre/lib/ext
目录中,如下所示。现在,您的项目应该在maven中构建,没有任何问题
我认为这行不通。您想将所需的库安装到本地存储。POM还不够我在尝试了你的建议后编辑了我的问题,我可以得到要编译的com.ibm.websphere
包,但仍然缺少几个com.ibm.ws
包。有人知道如何获取它们吗?用户不应该直接访问WAS_HOME/plugins/的内容,因此这可能是一个产品问题。APAR已用于WAS_HOME/dev/(例如)中不可用的其他API。例如,我们使用com.ibm.ws.asynchbeans
包中的WorkManagerImpl
。我不确定是否“允许”我更改库,因为它是一个高效的模块,而maven和CI的迁移(在当前阶段)是收集maven经验并在将来能够进行CI的第一步。感谢您提示commonj
文件在哪个jar中。昨天我接到通知,说公司范围内的nexus中有ibm文件,所以这是我现在尝试的一种方式。但我会记住你的答案,稍后再回答。Nexus是如何解决IBM软件包的?它们是否手动添加到那里(例如,第三方存储库)?
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>
<dependency>
<groupId>com.ibm.websphere.ws</groupId>
<artifactId>com.ibm.ws.runtime</artifactId>
<version>1.0.0</version>
</dependency>
<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>