部署爆炸耳朵的策略

时间:2009-12-10 01:38:03

标签: java ant jboss

我有一个构建过程,以相当复杂的方式创建一个耳朵(多个EJB jar,几个战争,几个sars(特定于JBoss)。将它拼凑在一起的ant过程有点复杂。< / p>

不在ANT中重新创建ejb创建逻辑的最佳策略是什么,但仍然能够部署到应用程序服务器或用于QA和生产。

虽然我关注JBoss,但这个问题与支持爆炸式耳部部署的任何应用服务器都非常相关,而且更多的是关于ANT,如何避免两个不同的目标重建创建zip文件的逻辑与复制到一个目录。

3 个答案:

答案 0 :(得分:5)

我发现对我们最有效的方法是在文件系统中以爆炸形式创建ZIP / EAR / WAR / JAR内容,然后作为最后一步zip / ear / war / jar来实现一份文件。

这允许我们进行后处理步骤,这些步骤只知道文件而不是zip文件条目,这通常要简单得多。如果您使用爆炸部署和在爆炸部署中获取已更改文件的服务器,则只需使用rsync即可更新服务器部署中实际更改的文件。

然后,您可以将建筑物放在一个目标中,并将其打包在另一个目标中,这样可以轻松完成这两个目标。


请参阅Alexander Pogrebnyak关于如何使用此解决方案处理清单的答案。

答案 1 :(得分:4)

这是对你对清单的评论的回复。

您应该使用<manifest>任务(here is the link)来控制清单创建。

以下是我的构建文件中提供清单的摘录。

<copy toDir="${stage.dir}" flatten="true">
  <fileset dir="${resources.src.dir}">
    <include name="META-INF/MANIFEST.MF"/>
  </fileset>
</copy>

<manifest
  file="${stage.dir}/MANIFEST.MF"
  mode="update"
>
  <attribute name="Built-By" value="${builder.name}" />
</manifest>

<jar destfile="${project.jar.file}"
  basedir="${classes.dir}"
  manifest="${stage.dir}/MANIFEST.MF"
  duplicate="fail"
  whenmanifestonly="fail"      
/>

注意<manifest>任务mode属性。您总是希望将其设置为update,否则<jar>任务将始终运行,因为清单始终是过时的。

答案 2 :(得分:3)

.ear文件是.zip文件。要部署爆炸版本,只需将内容解压缩到名为* .ear。

的文件夹中