0

我正在为 WebSphere 开发 Web 服务,我希望不再依赖于 Rational Software Delipvery Platform(又名 RAD)IDE。

我在问是否有人知道是否可以生成以下文件:

  • ibm-webservices-ext.xmi
  • ibm-webservices-bnd.xmi
  • 网络服务.xml

无需使用 RAD(例如一些 ant 脚本或 WebSphere 批处理)。

这是一个非常烦人的锁定。

我正在尝试将这些 webservices 项目移植到更可控的开发过程中,使用 maven、自动构建等,但我发现这非常困难。

有人解决过类似的问题吗?

4

1 回答 1

1

如果有人仍在寻求这方面的帮助,我们采取了一种稍微不同的方法,即在项目创建时创建 RAD 和 WAS 8.5 特定文件。

对于我当前的项目,我们有一个相当标准的项目结构和命名约定,因此我们使用 Maven 原型来创建我们的项目并将那些 IBM 特定文件,特别是 ibm-webservices-bnd.xmi 包含在 Maven 原型中。

最简单的方法是获取具有这些必要文件的现有项目,并使用create-from-project项目文件夹中的原型:

mvn clean archetype:create-from-project -Dinteractive=true

使用交互模式给原型一个合理的archetype.artifactId(但不要改变项目的 GAV):

Define value for archetype.groupId:  com.name.archgroup: : com.name.common.archetype
Define value for archetype.artifactId:  MyService-archetype: : service-archetype-0.8
Define value for archetype.version:  1.0-SNAPSHOT: :
Define value for groupId:  com.name.archgroup: :
Define value for artifactId:  MyService: :
Define value for version:  1.0-SNAPSHOT: :
Define value for package:  com.name: : com.name.common.archetype

这可以帮助您完成大部分工作,但默认情况下不会处理 IBM 文件。然后,诀窍是修改 /MyService/target/generated-sources/archetype/target/classes/archetype-resources 中生成的目标文件以同时修改 IBM 文件。将旧项目名称和包名称的实例替换为${rootArtifactId}${groupId}跟踪哪些文件具有不正确的值。

然后修改 /MyService/target/generated-sources/archetype/target/classes/META-INF/maven/archetype-metadata.xml 以包含您必须在过滤中手动更改的文件。例如,在我的 EJB 模块部分下,*.xmi 已包含但未过滤。将包含移动到过滤的文件集:

    <fileSet filtered="true" encoding="UTF-8">
      <directory>src/main/resources</directory>
      <includes>
        <include>**/*.xml</include>
        <include>**/*.properties</include>
        <include>**/*.xmi</include>
      </includes>
    </fileSet>

您需要对您修改的所有内容执行此操作以包含 a ${rootArtifactId}or${groupId}以便velocity 在下一步中对其进行处理:

cd target\generated-sources\archetype
mvn install

这会将您的更改打包并将 jar 放入本地存储库,以便您可以在发布到 Maven 存储库服务器之前对其进行测试。

满意后,将 maven 存储库添加到 target/generated-sources/archetype/pom.xml 并运行

mvn deploy

并指导开发人员开始使用原型来创建您的 mavenized 项目。

注意:我们的 ibm-webservices-bnd.xmi 文件似乎包含类似xmi:id="RouterModule_112345678901234" We remove this value before the 的mvn install内容,因为它似乎是项目特定的。

于 2013-06-06T15:02:36.783 回答