0

私はビルドの自動化がアリによって行われている大きなプロジェクトを持っています。すべてのファイルで共通の変数を変更するには、いくつかのアイデアまたは解決策が必要です。

たとえば、会社名、製品名、または年は、ヘルプ ファイル (html)、ライセンスおよび構成ファイル (txt、xml)、ソース コード (java->class) など、多くのファイルに含まれています。簡単に設定する方法はありますか?これらの変数を作成し、すべてのファイルを簡単に変更しますか? さまざまなツールも歓迎します。

ファイルを開き、場所を見つけて文字列を変更するためのコードを追加するオプションは常にありますが、これは洗練されたソリューションではないようです。

ありがとうございました。

4

2 に答える 2

2

Ant のCopyタスクとMoveタスクはどちらもfilterset要素をサポートしています。これを使用すると、トークンのグローバル置換をファイルセット内のファイルに適用できます。

簡単な例:

<target name="test">
    <mkdir dir="build"/>
    <copy todir="build">
        <fileset dir="src">
            <include name="*.txt"/>
        </fileset>
        <filterset>
            <filter token="COMPANY_NAME" value="Acme Inc."/>
        </filterset>
    </copy>
</target>

出力:

$ cat src/foo.txt
I work for @COMPANY_NAME@.
$
$ cat build/foo.txt
I work for Acme Inc..
于 2012-06-06T14:50:41.027 に答える
1

次の ANT ソリューションが気に入っています。

http://www.richardnichols.net/2009/08/automatically-updating-your-source-file-headers-with-ants-replaceregexp/

replaceregexpタスクを使用して、ライセンス ヘッダーが欠落している Java ファイルを見つけて修正します。

<target name="replace_headers">
    <loadfile property="javaheader" srcFile="lib/standardheader.txt"/>
    <replaceregexp match="(/\*.*\*/.*)??^package " flags="sm"
        replace="${javaheader}${line.separator}package ">
        <fileset dir="src">
            <include name="**/*.java"/>
        </fileset>
    </replaceregexp>
</target>

シンプルで、Java ソースで置換トークンを必要としません。

于 2012-06-06T21:12:59.473 に答える