web-dev-qa-db-ja.com

Antを使用してディレクトリをコピーする方法

copydirを使用してディレクトリツリーをコピーしましたが、廃止されました。私のディレクトリにはいくつかのサブディレクトリが含まれ、それらのいくつかにはファイルが含まれ、他のサブディレクトリには他のサブディレクトリが含まれます。

ツリー全体をコピーするにはどうすればよいですか?

96
<copy todir="${dest.dir}" >  
    <fileset dir="${src.dir}" includes="**"/>  
</copy> 

それはあなたが望むことをするだろうと信じています...(再帰コピーが完了しました)

111
Omnipresent

ディレクトリ自体を含むコンテンツをコピーします。

<copy todir="${dest.dir}" >  
    <fileset dir="${src.dir.parent}">  
        <include name="${src.dir}/**"/>
    </fileset>
</copy>
111
ery

ディレクトリのみを指定する必要があります(includesプロパティを除く):

<copy todir="../new/dir">
    <fileset dir="src_dir"/>
</copy>

詳細と例については、 manual をご覧ください。

25
s1n

ディレクトリ自体を含むコンテンツをコピーします。

<copy todir="${dest.dir}" >  
  <fileset dir="${src.dir.parent}" includes="${src.dir}/**"/>
</copy>
14
cmcginty

Build.xmlファイルのコードスニペットに示すように、インクルードタグを使用して、ディレクトリ内の個々のjarファイルをコピーしました。

<target name="devInstall" depends="generateXsl" description="testing">
<copy flatten="true" todir="${test}/WEB-INF/lib" overwrite="${overwrite}">
                <fileset refid="buildJars"/>
                <fileset dir="lib">
                    <include name="commons-collections-*.jar"/>
                    <include name="commons-io-*.jar"/>              
                    <include name="kodo/*.jar"/>
                    <include name="mail*.jar"/>    
                    <include name="activation*.jar"/>               
                    <include name="guava*.jar"/>
                    <include name="jna*.jar"/>                          
                </fileset>          
            </copy>
</target>
2
Raman B

細かい点:antは、ソースファイルが宛先ファイルよりも新しい場合にのみサブディレクトリをコピーします。 [1] 私の場合、サブディレクトリはコピーされていません(verbose = "true"を使用しています)。変更がなく、既に宛先にあったためです。 「上書き」を使用してそれを強制するか、ソースのサブディレクトリ内のファイルの一部に触れることができます。

2
Jess

すべてのサブフォルダーをコピーするために、より一般的なパターンを追加しています。

<copy todir="${dest.dir}" >  
  <fileset dir="${src.dir}" includes="**/*"/>
</copy>

詳細については、 パターン を参照してください。

1
sartoris

別のantタスクは Copydir です。ここで重要なのは、destディレクトリの後にコピーするディレクトリの名前を含めることです。サブディレクトリとファイルは自動的にコピーされます。

<target name="-post-jar">
    <copydir src="config" dest="${dist.dir}/config/"/>
</target>
1
Andrei

here から、コピータスクを使用して簡単なAntファイルを作成できます。

<project name="MyProject" default="copy" basedir=".">
    <target name="copy">
        <copy todir="./new/dir">
           <fileset dir="src_dir"/>
        </copy>
    </target>
</project>

これにより、src_dir内のすべて(それを除く)がnew/dirにコピーされます。

1
NawaMan

私は最終的に次のコードを使用してコピーしました

<copy todir="${root.dir}/dist/src">  
                <fileset dir="${root.dir}/build/src" includes="**"/>  
            </copy>

これにより、srcフォルダーがdistからビルドにコピーされます。

これが誰かを助けることを願っています。

0
Dilip Rajkumar

このコードは、フォルダーとその内容をコピーする必要があります。また、basenameタスクを使用して、手動のパス解析を行う必要がなくなります。

<project name="Build" default="doCopy">
  <property name="source.dir" value="SourceDirPathGoesHere"/>
  <property name="dest.dir" value="DestinationDirPathGoesHere"/>
  <target name="doCopy">
    <basename property="source.dir.base.name" file="${source.dir}"/>
    <copy todir="${dest.dir}">
      <fileset dir="${source.dir}/.." includes="${source.dir.base.name}/**"/>
    </copy>
  </target>
</project>
0
user506069