蚂蚁可以替换jar / ear / war中文件中的文本吗?

时间:2011-11-04 12:30:33

标签: java ant

我想构建我的ear文件一次然后使用ant来更改application.xml,属性文件等中的一些设置。

有没有办法用蚂蚁做到这一点?

[edit]刚发现这个

How do I modify a file in a jar file using ANT?

2 个答案:

答案 0 :(得分:4)

修改jar或ear内部文件的唯一方法是使用<unzip>任务,使用<replace>任务修改文件中的字段,然后重新压缩文件使用<zip><jar>/<ear>任务。

有几种方法可以解决这个问题,而无需解压缩和重新压缩你的ear / jar / war文件:

  • 首选方法是设置应用程序服务器,以便它可以在耳朵之外找到您的属性。在指定位置时,也可以将application.xml文件配置为不使用相对目录,而不是从计算机根目录指定位置。通过从您的耳朵中删除嵌入式环境信息,您可以在所有环境中使用相同的earfile。

  • 遗憾的是,我们无法执行上述操作,必须为每个环境提供单独的ear文件。我们使用Jenkins作为我们的持续构建服务器。当Jenkins完成我们的构建时,我们会同时为每个环境构建多个耳朵。这样,当我们从Dev转到QA再到STAGE再到Production时,我们至少可以引用相同的内部版本号。我们编译一次,然后使用AntContrib <foreach> task使用正确的属性文件设置和正确的application.xml文件来获取earfile。我们在<filterset>任务中使用<copy>来修改属性,并在构建耳朵时application.xml

答案 1 :(得分:0)

你可以做这样的事情

<zip destfile="tmp.jar" >
  <zipfileset src="lib/myjar.jar" excludes="org/example/My*.class" />
  <zipfileset dir="bin" includes="org/example/My*.class"  />
</zip>
<move file="tmp.jar" tofile="lib/myjar.jar"/>

在这个例子中,我们使用myjar.jar作为源创建一个tmp.jar,但不包括在org / example目录中以My开头的所有classees。然后,我们从bin目录中添加新版本。然后我们用新版本替换jar文件。