Saturday

Analyse with ANT - a sonar way

After the Javaone conference in Moscow, i have found some free hours to play with Sonar. Here is a quick steps to start analyzing with ANT projects. Sonar provides Analyze with ANT document to play around with ANT, i have just modify some parts.
Here is it.
1) Download the Sonar Ant Task and put it in your ${ANT_HOME}/lib directory
2) Modify your ANT build.xml as follows:
<?xml version = '1.0' encoding = 'windows-1251'?>

<project name="abc" default="build" basedir=".">
 <!-- Define the Sonar task if this hasn't been done in a common script -->
 <taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">
  <classpath path="E:\java\ant\1.8\apache-ant-1.8.0\lib" />
 </taskdef>
 <!-- Out-of-the-box those parameters are optional -->
 <property name="sonar.jdbc.url" value="jdbc:oracle:thin:@xyz/sirius.xyz" />
 <property name="sonar.jdbc.driverClassName" value="oracle.jdbc.driver.OracleDriver" />
 <property name="sonar.jdbc.username" value="sonar" />
 <property name="sonar.jdbc.password" value="sonar" />
 <!-- Additional Sonar configuration (PMD need 1.5 when using annotations)-->
 <property name="sonar.java.source" value="1.5"/>
 <property name="sonar.java.target" value="1.5"/>


 <!-- SERVER ON A REMOTE HOST -->
 <property name="sonar.host.url" value="http://sunny.fors.ru/sonar" />


 <property name="ear.file" value="konfiskat.ear"/>

 <property file="build.properties"/>

 <property name="build.dir"    value="build"/>
 <property name="classes.dir"  value="${build.dir}/classes"/>
 <property name="classes2.dir" value="classes"/>
 <property name="deploy.dir"   value="deploy"/>
 <property name="doc.dir"      value="docs"/>
 <property name="jar.dir"      value="${build.dir}/jar"/>
 <property name="lib.dir.1"    value="lib"/>
 <property name="lib.dir.2"    value="${lib.common.dir}"/>
 <property name="lib.dir.3"    value="common_lib"/>
 <property name="lib.dir.4"    value="${jdev.libs.dir}"/>
 <property name="src.dir"      value="src"/>
 <property name="config.dir"   value="${src.dir}/META-INF"/>
 <property name="temp.dir"   value="${src.dir}/temp"/>

 <path id="classpath">
  <fileset dir="${lib.dir.3}" includes="**/*.jar"/>
  <fileset dir="${lib.dir.2}" includes="**/com.ibm.mq.jar, **/jboss-j2ee.jar"/>
  <fileset dir="${lib.dir.4}" includes="**/*.jar"/>
 </path>

 <path id="srcpath">
  <pathelement location="${src.dir}"/>
 </path>
 <!-- Add the target -->
 <target name="sonar">
  <!-- The workDir directory is used by Sonar to store temporary files -->
  <sonar:sonar workDir="${temp.dir}" key="org.example:example" version="0.1-SNAPSHOT" xmlns:sonar="antlib:org.sonar.ant">

   <!-- source directories (required) -->
   <sources>
    <path location="${src.dir}" />
   </sources>

   <!-- binaries directories, which contain for example the compiled Java bytecode (optional) -->
   <binaries>
    <path location="${classes.dir}" />
   </binaries>

   <!-- path to libraries (optional). These libraries are for example used by the Java Findbugs plugin -->
   <libraries>
    <path refid="classpath"/>
   </libraries>
  </sonar:sonar>
 </target>

 <target name="clean">
 </target>

 <target name="init" depends="clean"/>

 <target name="compile" depends="init">
  <mkdir dir="${classes.dir}"/>
  <javac destdir="${classes.dir}"
    classpathref="classpath"
    debug="on">
   <src refid="srcpath"/>
  </javac>
 </target>

 <target name="doc" depends="compile">

 </target>

 <target name="build" depends="doc">
  <mkdir dir="${jar.dir}"/>
  <jar destfile="${jar.dir}/toOAS.jar">
   <manifest>
    <attribute name="Class-Path" value="com.ibm.mq.jar xercesImpl.jar"/>
   </manifest>
   <metainf dir="${config.dir}">
    <include name="ejb-jar.xml"/>
    <include name="orion-ejb-jar.xml"/>
   </metainf>
   <fileset dir="${classes.dir}">
    <include name="**/*.*"/>
   </fileset>
   <fileset dir="${src.dir}">
    <include name="*.properties"/>
   </fileset>
  </jar>

  <mkdir dir="${deploy.dir}"/>

  <echo file="${jar.dir}/application.xml"><![CDATA[<?xml version="1.0" encoding="UTF-8"?> <application> <display-name>ReadMQ</display-name> <module> <ejb>toOAS.jar</ejb> </module> </application>]]>
  </echo>

  <ear destfile="${deploy.dir}/${ear.file}"
    appxml="${jar.dir}/application.xml">
   <fileset dir="${jar.dir}" includes="*.jar"/>
   <fileset dir="${lib.dir.2}">
    <include name="com.ibm.mq.jar"/>
    <include name="xercesImpl.jar"/>
   </fileset>
  </ear>

 </target>

 <target name="all" depends="build"/>
</project>

Post a Comment