Java IBM Websphere包的Maven依赖项

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

我正在尝试使用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.0.0.pm,并使用

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>