我正在为WebSphere的webservices工作,我希望不再依赖Rational Software Delipvery Platform(又称RAD)IDE。
我在问是否有人知道是否可以生成以下文件:
无需使用RAD(例如某些ant脚本或WebSphere批处理)。
这是一个非常烦人的锁定。
我正在尝试使用maven,自动构建等将这些Web服务项目移植到更可控的开发过程中,但我发现它非常困难。
有人解决了类似的问题吗?
答案 0 :(得分:1)
如果有人仍在寻求帮助,我们在项目创建时创建了RAD和WAS 8.5特定文件,采取了稍微不同的方法。
对于我当前的项目,我们有一个相当标准的项目结构和命名约定,因此我们使用Maven原型来创建我们的项目,特别是在Maven原型中包含那些IBM特定文件,尤其是ibm-webservices-bnd.xmi。
最简单的方法是使用包含这些必要文件的现有项目,并使用项目文件夹中的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包含但未过滤。将include移动到已过滤的文件集:
<fileSet filtered="true" encoding="UTF-8">
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
<include>**/*.xmi</include>
</includes>
</fileSet>
您需要为修改后的所有内容执行此操作,以便包含${rootArtifactId}
或${groupId}
,以便速度在下一步中对其进行处理:
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"
之类的内容
我们在mvn install
之前移除此值,因为它似乎是项目特定的。