Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ant可以替换jar/ear/war中文件中的文本吗?_Java_Ant - Fatal编程技术网

Java ant可以替换jar/ear/war中文件中的文本吗?

Java ant可以替换jar/ear/war中文件中的文本吗?,java,ant,Java,Ant,我想构建一次ear文件,然后使用ant更改application.xml、属性文件等中的一些设置 有没有办法用ant做到这一点 [编辑]刚找到这个 修改jar或ear中文件的唯一方法是使用任务,使用任务修改文件中的字段,然后使用或任务重新压缩文件 有几种方法可以处理此问题,而无需解压缩和重新压缩ear/jar/war文件: 首选的方法是设置应用服务器,这样它就可以在ear之外找到您的属性。还可以将application.xml文件配置为在指定位置时不使用相对目录,而不是从机器的根目录指定位置。

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

有没有办法用ant做到这一点

[编辑]刚找到这个


修改jar或ear中文件的唯一方法是使用
任务,使用
任务修改文件中的字段,然后使用
任务重新压缩文件

有几种方法可以处理此问题,而无需解压缩和重新压缩ear/jar/war文件:

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

  • 不幸的是,我们无法实现上述功能,必须为每个环境提供单独的ear文件。我们使用它作为我们的持续构建服务器。当Jenkins进行构建时,我们同时构建多个EAR,每个环境一个。这样,当我们从开发到QA再到阶段再到生产时,我们至少可以引用相同的版本号。我们编译一次,然后使用来使用正确的属性文件设置和正确的
    application.xml
    文件来读取earfile。在构建ear时,我们在
    任务中使用
    来修改属性和
    application.xml


你可以这样做

<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开头的所有类。然后从bin目录中添加新版本。然后我们用新版本替换jar文件。

AFAIK,否。替换任务在目录上工作。您可以解压、替换和重新压缩吗?更新选项是否适用于您想要的内容?谢谢,我们也在使用jenkins,并且已经考虑过构建3或4个ear文件,但希望找到另一个解决方案。顺便说一句,构建管道插件相当不错。