Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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
Maven 使用Ant脚本将令牌从一个文件替换到另一个文件_Maven_Ant_Jenkins - Fatal编程技术网

Maven 使用Ant脚本将令牌从一个文件替换到另一个文件

Maven 使用Ant脚本将令牌从一个文件替换到另一个文件,maven,ant,jenkins,Maven,Ant,Jenkins,我正在尝试使用下面的ant的filterchain和replacetoken将几个令牌从一个资源包(.messages文件)替换到另一个资源包 <copy file="dev.properties" tofile="messages.properties"> <filterchain> <replaceregex pattern="\$\{" replace="{" /> <filterreader classname="org.

我正在尝试使用下面的ant的filterchain和replacetoken将几个令牌从一个资源包(.messages文件)替换到另一个资源包

<copy file="dev.properties" tofile="messages.properties">
    <filterchain>
    <replaceregex pattern="\$\{" replace="{" />
    <filterreader classname="org.apache.tools.ant.filters.ReplaceTokens">
            <param type="propertiesfile" value="properties.txt"/>
            <param type="tokenchar" name="begintoken" value="{"/>
            <param type="tokenchar" name="endtoken" value="}"/>
    </filterreader>
    </filterchain>
</copy>
messages.properties

server.name=myServerName
server.ip=127.0.0.1
SERVER_NAME="@server.name@"
SERVER_IP="@server.ip@"
请注意,messages.properties是部署到服务器的内容。它还有其他对所有环境都通用的条目。我正在使用Jenkins将项目部署到不同的环境中。我的计划是将此ANT目标/任务称为部署后步骤,在messages.properties中替换特定于环境/服务器的变量,如port、name等,然后使用Jenkins构建app server

你可以试试这个:

<project name="MyProject" default="useregex" basedir=".">
    <target name="useregex">
        <property file="dev.properties"/>
        <replace  file="messages.properties" token="@server.name@" value="${server.name}" />
        <replace  file="messages.properties" token="@server.ip@" value="${server.ip}" />
    </target>
</project>

这对我来说很有用。我希望过滤链上的人能给我一个更好的答案

  <target name="replaceLocalTokens">
    <property file="local.properties"/>
    <replace file="messages.properties" token="@build-number@" value="${build.number}"/>
    <replace file="messages.properties" token="@build-date@" value="${build.date}"/>
    <replace file="messages.properties" token="@server-name@" value="${server.name}"/>
    <replace file="messages.properties" token="@ssl-port@" value="${ssl.port}"/>
  </target>


您使用ant代替的是什么?该项目是作为Maven项目启动的,具有Maven结构。由于公司的安全性阻止了少数网站的下载,Maven nature目前已被禁用。该项目是在jdeveloper12c中构建的。我们通过Jenkin部署它,Jenkin使用JDeveloper项目相关文件(.jws等…)来构建项目。詹金斯是否需要任何插件来替换代币?作为部署前的一个步骤,我可以创建/使用Maven目标来替换令牌吗?谢谢Technext。我是从另一条线得到的;我希望避免在每个代币上都加上“替换”。很高兴听到这个消息!:)你能把你的解决方案作为一个答案贴出来,让其他人也能从中受益吗?好吧,这和我的建议有什么不同我想你误解我了。我说的是,我从另一个线程获得了您建议的解决方案,有人会使用filterchain提供一个干净的解决方案。:)