6

ビルド後、クライアントに新しいアプリをダウンロードするように指示するHTMLファイルを変更する必要があります。

トークンを検索します。リンクとトークンに置き換えます。

<replace file="index.html" >

    <!-- this searches for literal text ${MyTOKEN} -->
    <!-- does not "expand" ${MyTOKEN} before searching -->
    <replacetoken>${MyTOKEN}</replacetoken>

    <replacevalue>"some link" <br> ${MyTOKEN}</replacevalue>
</replace>

replacetokenandreplacevalueタグはテキストをリテラルとして受け取るため、このコードをテンプレートビルドスクリプトに移動することはできませんexpandproperties。私のバージョンのANTにはありません。

"some link"プロパティを使用してとの値を定義したいと思いMyTOKENます。


でプロパティを"some link"使用するための回避策は、を使用してfilterchain、置換後にファイルをコピーすることです。

<copy file="index.html" tofile="index2.html" >
    <filterchain>
        <!-- this converts the ${xxx} properties into their values -->
        <expandproperties />
    </filterchain>
</copy>

ただし、これは実行後に機能します。つまり、値をビルドスクリプトに直接replaceハードコーディングする必要があります。MyTOKEN

  • ビルドスクリプトの外部でトークンを定義し、ビルドスクリプト内でそれを参照したいと思います。
  • それ、どうやったら出来るの?

更新:、、およびを使用して独自のreplaceタスクを作成する必要がありますか?私はその方法を正しく理解していませんが、それは方法のように見えます。copyfilterreaderfilterchain


受け入れられた回答を拡張して更新:複数行にまたがる値が必要だったため、元々<replacetoken>&メソッドを使用していました。<replacevalue>

token&を使用してvalue、改行する方法を見つけることができませんでした。

改行を入れるための解決策は、改行${line.separator}として使用することです。エコータスクのドキュメントを参照してください。

補足として、ここにいくつかのより有用な(トピック外の)ANTプロパティのページがあります:組み込みのAntプロパティ

4

2 に答える 2

8

tokenandvalue属性の使用はここで機能します。これはAnt1.7.1で動作します。

build.properties

token=FOO
tokval=some ${token}

build.xml

<project>
  <property file="build.properties" />
  <target name="repl">
    <replace file="test.txt" token="${token}" value="${tokval}" />
  </target>
</project>

お役に立てば幸いです。

于 2012-06-14T07:46:13.533 に答える
0

プロパティを移動する必要がある場所で、マーカーを使用して複数行の置換を行うことができます。@__relative_url_to_doc_root__@

     <replace dir="${dir_build_docs_javadoc}">
        <replacetoken><![CDATA[</head>]]></replacetoken>
       <replacevalue><![CDATA[<meta name="viewport" content="width=device-width"/>
<!-- Required for syntax highlighting (1/2)...START -->
  <script type="text/javascript" src="@__relative_url_to_doc_root__@resources/shCore.js"></script>
  <link href="@__relative_url_to_doc_root__@resources/shCore.css" rel="stylesheet" type="text/css"/>
  <link href="@__relative_url_to_doc_root__@resources/shThemeDefault.css" rel="stylesheet" type="text/css"/>
  <script type="text/javascript" src="@__relative_url_to_doc_root__@resources/shBrushJava.js"></script>
<!-- Required for syntax highlighting (1/2)...END -->
</HEAD>]]></replacevalue>
     </replace>

次に、プロパティの別の1行の置換を実行します。

<target name="-replace_all_javadoc_headers">
   <antcall target="-javadoc_replace_headers_in_one_dir">
     <param name="directory_to_replace" value="${dir_build_docs_javadoc}"/>
     <param name="relative_url_to_doc_root" value=""/>
   </antcall>
   <antcall target="-javadoc_replace_headers_in_one_dir">
     <param name="directory_to_replace" value="${dir_build_docs_javadoc}${cg_xbn_codelet}"/>
     <param name="relative_url_to_doc_root" value="../../../../"/>
   </antcall>
   <antcall target="-javadoc_replace_headers_in_one_dir">
     <param name="directory_to_replace" value="${dir_build_docs_javadoc}${cg_xbn_codelet}type${fs}"/>
     <param name="relative_url_to_doc_root" value="../../../../../"/>
   </antcall>
   <antcall target="-javadoc_replace_headers_in_one_dir">
     <param name="directory_to_replace" value="${dir_build_docs_javadoc}${cg_xbn_codelet}taglet${fs}"/>
     <param name="relative_url_to_doc_root" value="../../../../../"/>
   </antcall>
</target>

<target name="-javadoc_replace_headers_in_one_dir">
  <replace dir="${directory_to_replace}" 
        token="@__relative_url_to_doc_root__@" 
        value="${relative_url_to_doc_root}">
     <include name="*.html"/>
  </replace>

于 2014-05-11T02:20:12.063 に答える