IBM Websphere包的Maven依赖项

时间:2016-04-12 05:12:58

标签: java maven websphere-8

我试图改变经典"使用IBM websphere 8.0.0.5的JAVA EE项目进入maven多模块项目并面临IBM家属的问题。

我们使用以下包中的IBM类:<​​/ p>

  • 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提示后,我复制了&#34; was_public.jar&#34; to&#34; was_public-8.0.0.jar&#34; (在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。在上面链接的教程中,com.ibm.tools依赖(不起作用)是不是有更简单的方法可以一次性提供所有的websphere jar?

3 个答案:

答案 0 :(得分:3)

通常,com.ibm.websphere是供应用程序使用的公共API(对于上面列出的软件包也是如此),这与was_public.jar

中的软件包一致

但是,com.ibm.ws包通常是产品内部。请问com.ibm.ws.asynchbeans包中使用的接口方法是什么?也许有一个公共API替代方案。

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

答案 1 :(得分:1)

这是解决方案所以我解决了我的依赖问题:

  1. 我将公司存储库管理器(nexus)配置为镜像。在这个关系中,所有的ibm软件包都存在。你可以认为这解决了主要问题。
  2. 然后我根据常见的maven样式添加了以下依赖项:
  3. 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>
    

    对不起,我无法提供一个很好的&#34;所有人都可以使用的解决方案,但来自 njr 的答案以及来自 BevynQ 的评论有助于更清楚地解决问题并帮助解决问题a&#34;更多手册&#34;通过手工复制所需的罐子。

答案 2 :(得分:0)

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

enter image description here

我就是这样解决的:第1步。here下载commonj.jar。 第2步。在命令提示符下键入mvn -version,确定Maven正在使用的JDK。 enter image description here

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

enter image description here