ラベル ant の投稿を表示しています。 すべての投稿を表示
ラベル ant の投稿を表示しています。 すべての投稿を表示

2015年12月28日月曜日

Antで複数のmkdirタスクを実行する。

AntのScriptタスクを利用して、ディレクトリのパスをPathConvertで変換した後に、そのディレクトリを作成します。

build.xml
<?xml version="1.0" encoding="UTF-8"?>
 <target name="pathConvertor" description="">
  <pathconvert property="convertedDir">
   <dirset dir=".">
    <patternset id="convdir">
     <include name="**/java/**"/>
     <include name="**/resources/**"/>
    </patternset>
   </dirset>
   <mapper>
    <filtermapper>
     <replacestring from="java" to="replaced"/>
     <replacestring from="resources" to="replaced"/>
    </filtermapper>
   </mapper>
  </pathconvert>
  <script language="javascript"><![CDATA[
   var toDir = project.getProperty("convertedDir");
   var dirs = toDir.split(";");
   var size = dirs.length;
   var mkdir = project.createTask("mkdir");
   for (var i = 0; i < size; i++) {
    var targetDir = dirs[i];
    mkdir.setDir(new java.io.File(targetDir));
    mkdir.perform();
   }
  ]]></script>
 </target>
</project>


実行結果
e:\work\ant>ant pathConvertor
Buildfile: e:\work\ant\build.xml

pathConvertor:
    [mkdir] Created dir: e:\work\ant\dir\replaced
    [mkdir] Created dir: e:\work\ant\path\to\example\replaced
    [mkdir] Created dir: e:\work\ant\src\main\replaced
    [mkdir] Created dir: e:\work\ant\src\test\replaced

BUILD SUCCESSFUL
Total time: 2 seconds
e:\work\ant>tree
フォルダー パスの一覧
ボリューム シリアル番号は 00000200 A0FE:B066 です
E:.
├─dir
│  ├─java
│  ├─replaced
│  └─resources
├─path
│  └─to
│      └─example
│          ├─java
│          └─replaced
└─src
    ├─main
    │  ├─java
    │  ├─replaced
    │  └─resources
    └─test
        ├─java
        ├─replaced
        └─resources


2014年3月15日土曜日

Copy Paste Detector(CPD)の解析結果をHTMLにする。

CPDで解析した結果はそのままでは見難いので、
antのタスクで解析からHTML出力まで行います。
HTMLにする際、XSLTテンプレートがPMDに含まれているので、
それを利用します。
ディレクトリ構成は以下の通りです。

/
  /pmd-bin-5.1.0/
  /commons-net-3.3-src/
  /apache-ant-1.8.4/
  build.xml
  cpdExec.bat

以下は、antのbuild.xmlファイルです。

<?xml version="1.0" encoding="UTF-8"?>
<project name="CPD" default="analysis" basedir=".">
  <path id="cpd.lib">
    <fileset dir="./pmd-bin-5.1.0/lib">
      <include name="*.jar"/>
    </fileset>
  </path>
  <taskdef name="cpd" classpathref="cpd.lib" classname="net.sourceforge.pmd.cpd.CPDTask"/>
  <target name="analysis">
    <antcall target="cpd" />
    <antcall target="xslt" />
  </target>
  <target name="cpd">
    <cpd encoding="UTF-8" minimumTokenCount="100" format="xml" language="java" outputFile="cpd.xml">
         <fileset dir="./commons-net-3.3-src/src/main/java">
             <include name="**/*.java"/>
         </fileset>
     </cpd>
  </target>
  <target name="xslt">
    <xslt in="cpd.xml" style="./pmd-bin-5.1.0/etc/xslt/cpdhtml.xslt" out="cpd.html" />
  </target>
</project>

batファイルは、以下のように記述します。

setlocal
set JAVA_HOME=%ProgramFiles%\Java\jdk1.7.0_51
set ANT_HOME=./apache-ant-1.8.4
"%ANT_HOME%\bin\ant.bat"
pause

HTMLは以下のような感じになります。

Copy Paste Detector(CPD)