我们希望构建多个 *.PAA 文件以部署在 IBM websphere 8.5 上。
我很乐意使用 maven 将我们现有的 Portal *.war 项目整合到一个 PAA 文件中。
PAA 文件就像 EAR 文件一样 - 但其中的结构更多。 在这里查看规范:http://www-01.ibm.com/support/knowledgecenter/SSYJ99_8.0.0/config/si_paa_spec.dita
这可行吗?或者我应该只使用 antscript 吗?
TIA。
最佳答案
绝对可行。我们已经实现了一个解决方案来执行此操作,但对于 Portal 8.0.0.1,该解决方案已用于管理 40 多个 war 文件、主题、jar 和 PAA 支持的其他 Artifact 。
这些是创建我们的解决方案所涉及的步骤:
- 在没有 WAR 文件的情况下手动创建新的 PAA(即复制提供的示例 PAA、重命名文件夹和属性文件,以及编辑 sdd.xml 文件)。确保通过在其中放置测试 WAR 文件来测试此手动 PAA,并确保它得到部署。
- 新建一个简单的maven pom项目
- 将 PAA 项目(没有 WAR 文件)复制到 src/main/resources(您可以将其添加为资源目录或使用 maven-resources-plugin 将它们添加到目标目录)
- 将所有 WAR 文件和其他 Artifact 作为依赖项添加到 pom.xml 文件中(我们使用分类器来区分普通 WAR 文件和 Portlet WAR 文件,但这确实需要源项目指定他们 pom 中的分类器)
- 使用 maven-assembly-plugin 的 dependencySet 功能将您的依赖项复制到 PAA 所需的特定位置。使用 fileSet 功能来包含之前复制的项目 PAA 文件。确保程序集 package.xml 生成一个 zip 文件并且不包含基本目录。
package.xml 中的示例依赖集(注意独立 WAR 文件的分类器 webapp 的用法)
<dependencySet> <unpack>false</unpack> <scope>runtime</scope> <outputDirectory>myApp/components/MyApp/installableApps/war</outputDirectory> <outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping> <includes> <include>*:war:webapp</include> </includes> </dependencySet> <dependencySet> <unpack>false</unpack> <scope>runtime</scope> <outputDirectory>myApp/components/MyApp/installableApps/portlets</outputDirectory> <outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping> <includes> <include>*:war</include> </includes> </dependencySet>
关于java - 使用 Maven 构建 "Portal Application Archive"*.PAA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27181788/