2016-03-30 4 views
1

antがテキストファイル内の行数を決定するように、以下のコードを変更する方法を知っておく必要があります(ここではすべてのテキストファイルは同じ行数を持ちますが、その数は固定されていません)、ループに基づいて自動的に実行します。ここでAntスクリプトでのリソース数

<project name="ant-read-n-files" default="run" basedir="."> 
 
    
 
    <!-- Load the ant contrib lib --> 
 
    <taskdef resource="net/sf/antcontrib/antlib.xml"> 
 
    <classpath> 
 
     <pathelement location="${basedir}/lib/ant-contrib.jar"/> 
 
    </classpath> 
 
    </taskdef> 
 
    
 
    <target name="read"> 
 
    <!-- file a --> 
 
    <loadfile property="textFileA" srcfile="${basedir}/files/aaa.txt"> 
 
     <filterchain> 
 
     <headfilter lines="1" skip="${linenum}"/> 
 
     </filterchain> 
 
    </loadfile> 
 
    <for param="line" list="${textFileA}" delimiter="${line.separator}"> 
 
     <sequential> 
 
     <property name="textFileAValue" value="@{line}"/> 
 
     </sequential> 
 
    </for> 
 
    <!-- file b --> 
 
    <loadfile property="textFileB" srcfile="${basedir}/files/bbb.txt"> 
 
     <filterchain> 
 
     <headfilter lines="1" skip="${linenum}"/> 
 
     </filterchain> 
 
    </loadfile> 
 
    <for param="line" list="${textFileB}" delimiter="${line.separator}"> 
 
     <sequential> 
 
     <property name="textFileBValue" value="@{line}"/> 
 
     </sequential> 
 
    </for> 
 
    <!-- file c --> 
 
    <loadfile property="textFileC" srcfile="${basedir}/files/ccc.txt"> 
 
     <filterchain> 
 
     <headfilter lines="1" skip="${linenum}"/> 
 
     </filterchain> 
 
    </loadfile> 
 
    <for param="line" list="${textFileC}" delimiter="${line.separator}"> 
 
     <sequential> 
 
     <property name="textFileCValue" value="@{line}"/> 
 
     </sequential> 
 
    </for> 
 
    
 
    <!-- Print them all --> 
 
    <echo message="${textFileAValue}"/> 
 
    <echo message="${textFileBValue}"/> 
 
    <echo message="${textFileCValue}"/> 
 
    </target> 
 
    
 
    <target name="run"> 
 
    <foreach param="linenum" list="0,1,2" target="read"/> 
 
    </target> 
 
</project>

リストを見るように=「0,1,2」ループは、各テキストファイルの最初の3行を検証することを意味し、しかし、私は、これは数に応じて動的になりたいですファイルが持つ行の数。 ここにお手伝いいただければ幸いです。以下のソリューションはここに働く

おかげで、 アシュリー

+0

あなたのビルドにSonarQubeを統合すると考えたことがありますか?ソースコード数は、収集され、Webアプリケーションダッシュボードに報告されるメトリックの1つです。 –

答えて

1

: -

<project name="ant-read-n-files" default="run" basedir="."> 
 
    
 
    <!-- Load the ant contrib lib --> 
 
    <taskdef resource="net/sf/antcontrib/antlib.xml"> 
 
    <classpath> 
 
     <pathelement location="${basedir}/lib/ant-contrib.jar"/> 
 
    </classpath> 
 
    </taskdef> 
 
    
 
    <target name="read"> 
 
    <!-- file a --> 
 
    <loadfile property="textFileA" srcfile="${basedir}/files/aaa.txt"> 
 
     <filterchain> 
 
     <headfilter lines="1" skip="${linenum}"/> 
 
     </filterchain> 
 
    </loadfile> 
 
    <for param="line" list="${textFileA}" delimiter="${line.separator}"> 
 
     <sequential> 
 
     <property name="textFileAValue" value="@{line}"/> 
 
     </sequential> 
 
    </for> 
 
    <!-- file b --> 
 
    <loadfile property="textFileB" srcfile="${basedir}/files/bbb.txt"> 
 
     <filterchain> 
 
     <headfilter lines="1" skip="${linenum}"/> 
 
     </filterchain> 
 
    </loadfile> 
 
    <for param="line" list="${textFileB}" delimiter="${line.separator}"> 
 
     <sequential> 
 
     <property name="textFileBValue" value="@{line}"/> 
 
     </sequential> 
 
    </for> 
 
    <!-- file c --> 
 
    <loadfile property="textFileC" srcfile="${basedir}/files/ccc.txt"> 
 
     <filterchain> 
 
     <headfilter lines="1" skip="${linenum}"/> 
 
     </filterchain> 
 
    </loadfile> 
 
    <for param="line" list="${textFileC}" delimiter="${line.separator}"> 
 
     <sequential> 
 
     <property name="textFileCValue" value="@{line}"/> 
 
     </sequential> 
 
    </for> 
 
    
 
    <!-- Print them all --> 
 
    <echo message="${textFileAValue}"/> 
 
    <echo message="${textFileBValue}"/> 
 
    <echo message="${textFileCValue}"/> 
 
    </target> 
 
    
 
    <target name="run"> 
 
    <!-- Get number of lines of one of the files --> 
 
    <loadfile property="textFile" srcfile="${basedir}/files/aaa.txt"/> 
 
    <resourcecount property="line.count" count="0" when="eq"> 
 
     <tokens> 
 
     <concat> 
 
      <filterchain> 
 
      <tokenfilter> 
 
       <stringtokenizer delims="${line.separator}" /> 
 
      </tokenfilter> 
 
      </filterchain> 
 
      <propertyresource name="textFile" /> 
 
     </concat> 
 
     </tokens> 
 
    </resourcecount> 
 
    <echo message="Number of lines: ${line.count}" /> 
 
    
 
    <script language="javascript"> 
 
     var list="", n=parseInt(project.getProperty("line.count"), 0); 
 
     for (var i = 0; i &lt; n; i++) list += i + ","; 
 
     project.setProperty("list", list); 
 
    </script> 
 
    <foreach param="linenum" list="${list}" target="read"/> 
 
    
 
    </target> 
 
</project>

関連する問題