Sut i awtomeiddio eich broses adeiladu gan ddefnyddio Java a Ant?

Automate build with Ant

Awtomeiddio adeiladu gyda Ant

Trosolwg:

Yn y ddogfen hon byddwn yn trafod am y morgrugyn offeryn adeiladu a defnyddio hyn sut y gallwn awtomeiddio'r mecanwaith adeiladu ar gyfer ceisiadau sy'n seiliedig ar java. Yn ant cyfnod heddiw wedi dod yn rhan annatod o ddatblygiad java. Mae'r rhan fwyaf o gwsmeriaid yn hoffi cael sgript adeiladu awtomataidd fel rhan o'r cod ffynhonnell a ddarperir. Y rheswm am hyn yw symlrwydd a ddarperir gan y morgrugyn fel y gall unrhyw un sydd â ychydig o wybodaeth sgriptio greu deuaidd defnyddiadwy heb wybod y cais yn fanwl.

Cyflwyniad:
Apache ant is a generic build tool. Mae'r stondinau enw ANT cryno ar gyfer 'Teclyn Neat arall'. Mae'r teclyn hwn yn debyg i'r cyfleustodau 'Make' yn UNIX ond yn cael ei weithredu gan ddefnyddio Java. Mae'n cael ei ddefnyddio yn bennaf ar gyfer adeiladu'r binaries o cod ffynhonnell sy'n seiliedig ar java a lleoli y deuaidd a gynhyrchir i weinydd gais sy'n diffinio ymlaen llaw. It can also be used to generate javadocs for a code base and to execute the unit test suite for the whole codebase. Ant in collaboration with JUNIT helps developer to follow the test driven development approach.

Ant requires Java compiler to be installed having the environment variable JAVA_HOME set with its adequate value. Ant uses an XML file to define the build procedure. Yr enw diofyn y ffeil yn build.xml. Mae rhai datblygwyr hefyd yn defnyddio priodweddau ffeil sef build.properties i ddiffinio rhai eiddo e.e.. the build version number and other environmental parameters which are required to change from time to time based on the need.

Installation:
FEDORA: On RHEL, ANT can be installed using the command – yum install ant or it can be installed using the rpm – i command. In this case you should download the ant package first.

Debian: On Ubuntu, ANT can be installed using the command – apt-get install ant.

Windows: On windows environment we need to download the ant_<VERSION_NO>.zip file. This zip bundle should be extracted in a folder. This folder should be defined as an environment variable ANT_HOME.

A sample build.xml file is shown as under:

LISTING 1: Sample build.xml file

[Code]

<?xml version=”1.0″?>

<project name=”Ant-Test” default=”prif” basedir=”.”>

<!– Sets variables which can later be used. –>

<!– The value of a property is accessed via ${} –>

<property name=”src.dir” location=”src” />

<property name=”build.dir” location=”bin” />

<property name=”dist.dir” location=”dist” />

<property name=”docs.dir” location=”docs” />

<!– Deletes the existing build, docs and dist directory–>

<target name=”clean”>

<delete dir=”${build.dir}” />

<delete dir=”${docs.dir}” />

<delete dir=”${dist.dir}” />

</target>

<!– Creates the build, docs and dist directory–>

<target name=”makedir”>

<mkdir dir=”${build.dir}” />

<mkdir dir=”${docs.dir}” />

<mkdir dir=”${dist.dir}” />

</target>

<!– Compiles the java code (including the usage of library for JUnit –>

<target name=”compile” depends=”clean, makedir”>

<javac srcdir=”${src.dir}” destdir=”${build.dir}”>

</javac>

</target>

<!– Creates Javadoc –>

<target name=”docs” depends=”compile”>

<javadoc packagenames=”src” sourcepath=”${src.dir}” destdir=”${docs.dir}”>

<!– Define which files / directory should get included, we include all –>

<fileset dir=”${src.dir}”>

<include name=”**” />

</fileset>

</javadoc>

</target>

<!–Creates the deployable jar file –>

<target name=”jar” depends=”compile”>

<jar destfile=”${dist.dir}\in.kolkalta.build.test.ant.jar” basedir=”${build.dir}”>

<manifest>

<attribute name=”Main-Class” value=”test.Main” />

</manifest>

</jar>

</target>

<target name=”prif” depends=”compile, jar, docs”>

<description>Main target</description>

</target>

</project>

[/Code]

Automation yn defnyddio ANT:
Ant yn darparu help mawr i ddatblygwyr java. Bydd bron pob datblygwr java hoffi cael sgript a all ofalu am redeg y prawf uned a chreu ffeil ddosbarthu deuaidd y gellir eu defnyddio ar weinydd gais. Ant hefyd yn darparu ffyrdd i redeg sgriptiau awtomataidd sy'n cael eu defnyddio i berfformio profion uned ar sylfaen cod. Thus, mae'n darparu cymorth i ddatblygwyr sy'n defnyddio'r dull datblygu a yrrir prawf. As we know in test driven development methodology JUNIT is a compulsion, mae bob amser yn fantais ychwanegol os oes gennym sgript awtomataidd sy'n rhedeg yr holl achosion prawf junit mewn un cam. Nid yn unig y gall y sgript hwn yn cael ei ddefnyddio hefyd os oes gennym ganddo integreiddio di-dor tooled e.e.. Hudson. Our following sample code illustrates how to use ANT with JUNIT.

LISTING 2: A Sample java file

[Code]

package com.home.junit;

cyhoeddus dosbarth SampleAdd {

cyhoeddus int ychwanegu(int x, int y) {

return x + y;

}

}

[/Code]

LISTING 3: The corresponding JUNIT file

[Code]

package com.home.junit;

import org.junit.After;

import org.junit.Assert;

import org.junit.Before;

import org.junit.Test;

public class SampleAddTest {

private SampleAdd sampleClass;

@Before

public void setUp() {

sampleClass = new SampleAdd();

}

@Test

public void testAdd() {

Assert.assertEquals(5, sampleClass.add(3, 2));

}

@After

public void settleDown() {

sampleClass = null;

}

}

[/Code]

LISTING 4: The ANT script to compile and run the JUNIT test

[Code]

<?xml version=”1.0″?>

<project name=”JUNIT” default=”prif” basedir=”..”>

<!– Sets variables which can later be used. –>

<!– The value of a property is accessed via ${} –>

<property name=”src.dir” location=”src” />

<property name=”test.dir” location=”tests” />

<property name=”build.dir” location=”bin” />

<property name=”build.test.dir” location=”bin/tests” />

<!– Variables used for JUnit testin –>

<property name=”test.report.dir” location=”testreport” />

<!– Define the classpath which includes the junit.jar and the classes after compiling–>

<path id=”junit.class.path”>

<pathelement location=”lib/junit-4.11.jar” />

<pathelement location=”lib/hamcrest-core-1.3.jar” />

<pathelement location=”${build.dir}” />

</path>

<!– Deletes the existing build, docs and dist directory–>

<target name=”clean”>

<delete dir=”${build.dir}” />

<delete dir=”${test.report.dir}” />

</target>

<!– Creates the build, docs and dist directory–>

<target name=”makedir”>

<mkdir dir=”${build.dir}” />

<mkdir dir=”${build.test.dir}” />

<mkdir dir=”${test.report.dir}” />

</target>

<!– Compiles the java code (including the usage of library for JUnit –>

<target name=”compile” depends=”clean, makedir”>

<javac srcdir=”${src.dir}” destdir=”${build.dir}”>

<classpath refid=”junit.class.path” />

</javac>

<javac srcdir=”${test.dir}” destdir=”${build.test.dir}”>

<classpath refid=”junit.class.path” />

</javac>

</target>

<!– Run the JUnit Tests –>

<!– Output is XML, could also be plain–>

<target name=”junit” depends=”compile”>

<junit printsummary=”on” fork=”yn wir” haltonfailure=”yes”>

<classpath refid=”junit.class.path” />

<classpath>

<pathelement location=”${build.test.dir}”/>

</classpath>

<formatter type=”xml” />

<batchtest todir=”${test.report.dir}”>

<fileset dir=”${test.dir}”>

<include name=”**/*Test*.java” />

</fileset>

</batchtest>

</junit>

</target>

<target name=”prif” depends=”compile, junit”>

<description>Main target</description>

</target>

</project>

[/Code]

When we run this script, yn gyntaf lunio'r sylfaen cod ac yna'n rhedeg profion junit ar y cod a luniwyd ac yn olaf cynhyrchu adroddiad prawf. The test report can be generated in any format. For convenience we have generated this in XML format.

LISTING 5: The Generated test report in XML format

[Code]

<?xml version=”1.0″ encoding=”UTF-8″?>

-<testsuite timestamp=”2013-10-26T18:52:45″ time=”0.077″ tests=”1″ name=”com.home.junit.SampleAddTest” hostname=”INDTAPPL132-001″ failures=”0″ errors=”0″>-<properties><property name=”java.vendor” value=”Oracle Corporation”/><property name=”sun.java.launcher” value=”SUN_STANDARD”/><property name=”eclipse.pdebuild.templates” value=”/F:/Utpal / Softs / Softs / Eclipse-java-indigo-win32 / Eclipse / plugins / org.eclipse.pde.build_3.7.0.v20110512-1320 / templedi /”/><property name=”sun.management.compiler” value=”Hotspot Cleient Crynhoydd”/><property name=”os.name” value=”ffenestri 7″/><property name=”sun.boot.class.path” value=”C:\Program Files Java jre7 lib resources.jar;C:\Program Files Java jre7 lib rt.jar;C:\Program Files Java jre7 lib sunrsasign.jar;C:\Program Files Java jre7 lib jsse.jar;C:\Program Files Java jre7 ddod yn jce.jar;C:\Program Files Java jre7 lib charsets.jar;C:\Program Files Java jre7 lib jfr.jar;C:\Program Files Java jre7 dosbarthiadau”/><property name=”sun.desktop” value=”ffenestri”/><property name=”java.vm.specification.vendor” value=”Oracle Corporation”/><property name=”ant.home” value=”F:\Utpal Softs Softs Eclipse-java-indigo-win32 Eclipse ategion org.apache.ant_1.8.2.v20110505-1300″/><property name=”java.runtime.version” value=”1.7.0_45-B18″/><property name=”user.name” value=”utpalb”/><property name=”build.dir” value=”F:\Gwaith RnDSpace Junit bin ”/><property name=”user.language” value=”yn”/><property name=”test.report.dir” value=”F:\Gwaith RnDSpace Junit testreport”/><property name=”sun.boot.library.path” value=”C:\Program Files Java jre7 bin”/><property name=”ant.project.default-darged” value=”prif”/><property name=”ant.project.name” value=”JUNIT”/><property name=”java.version” value=”1.7.0_45″/><property name=”user.timezone” value=””/><property name=”sun.arch.data.model” value=”32″/><property name=”java.endorsed.dirs” value=”C:\Program Files Java jre7 lib cymeradwyo”/><property name=”sun.cpu.isalist” value=”pentium_pro MMX pentium_pro Pentium MMX Pentium i486 i386 i86″/><property name=”Sunkjnukencoding” value=”Cp1252″/><property name=”file.encoding.pkg” value=”sun.io”/><property name=”file.separator” value=”\”/><property name=”java.specification.name” value=”Manyleb API Java Llwyfan”/><property name=”java.class.version” value=”51.0″/><property name=”user.country” value=”Unol Daleithiau”/><property name=”java.home” value=”C:\Program Files Java jre7″/><property name=”java.vm.info” value=”modd cymysg, rhannu”/><property name=”ant.file” value=”F:\Gwaith RnDSpace Junit adeiladu build.xml”/><property name=”os.version” value=”6.1″/><property name=”path.separator” value=”;”/><property name=”java.vm.version” value=”24.45-B08″/><property name=”user.variant” value=””/><property name=”ant.library.dir” value=”F:\Utpal Softs Softs Eclipse-java-indigo-win32 Eclipse plugins org.apache.ant_1.8.2.v20110505-1300 lib”/><property name=”java.awt.printerjob” value=”sun.awt.windows.WPrinterJob”/><property name=”sun.io.unicode.encoding” value=”UnicodeLittle”/><property name=”ant.file.type.JUNIT” value=”ffeil”/><property name=”awt.toolkit” value=”sun.awt.windows.WToolkit”/><property name=”user.script” value=””/><property name=”ant.file.JUNIT” value=”F:\Gwaith RnDSpace Junit adeiladu build.xml”/><property name=”eclipse.pdebuild.scripts” value=”/F:/Utpal / Softs / Softs / Eclipse-java-indigo-win32 / Eclipse / plugins / org.eclipse.pde.build_3.7.0.v20110512-1320 / sgriptiau /”/><property name=”user.home” value=”C:\Defnyddwyr utpalb”/><property name=”java.specification.vendor” value=”Oracle Corporation”/><property name=”test.dir” value=”F:\Gweithio RnDSpace Junit profion”/><property name=”java.library.path” value=”C:\Program Files Java jre7 bin;C:\Windows Haul Java bin ;C:\Windows system32;C:\Windows;C:/Program Files / Java / jre7 / bin / cleient;C:/Program Files / Java / jre7 / bin;C:/Program Files / Java / jre7 / lib / i386;C:\Windows system32;C:\Windows;C:\Windows System32 Wbem;C:\Windows System32 WindowsPowerShell v1.0 ;C:\Program Files Java jdk1.6.0_10 bin;Mae'n:\apache-ant-1.8.2-bin apache-ant-1.8.2 bin;C:\Program Files Technologies Hylifol Stiwdio XML Hylif 2011 XmlDataBinder9 Redist9 CPP win32 bin;C:\Program Files TortoiseSVN bin ;Mae'n:\Program Files Android VIP-SDK llwyfan-offer;Mae'n:\Program Files Android offer VIP-SDK;C:\Program Files QuickTime QTSystem ;D:\Haul AppServer bin ;9;F:\Utpal Softs Softs Eclipse-java-indigo-win32 Eclipse;;.”/><property name=”java.vendor.url” value=”http://java.oracle.com/”/><property name=”java.vm.vendor” value=”Oracle Corporation”/><property name=”java.runtime.name” value=”Java(TM) SE Rhedeg Amgylchedd”/><property name=”sun.java.command” value=”org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner com.home.junit.SampleAddTest filtertrace = gwir haltOnError = haltOnFailure ffug = gwir Formatter = org.apache.tools.ant.taskdefs.optional.junit.SummaryJUnitResultFormatter showoutput = outputtoformatters ffug = gwir logfailedtests = gwir logtestlistenerevents = Formatter ffug = org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,F:\Gwaith RnDSpace Junit testreport TEST-com.home.junit.SampleAddTest.xml crashfile = F:\Gwaith RnDSpace Junit junitvmwatcher6288340937110531134.properties propsfile = F:\Gwaith RnDSpace Junit junit7583515827572177542.properties”/><property name=”java.class.path” value=”F:\Gwaith RnDSpace Junit lib junit-4.11.jar;F:\Gwaith RnDSpace Junit lib hamcrest-graidd-1.3.jar;F:\Gwaith RnDSpace Junit bin ;F:\Gweithiwch RnDSpace Junit profion bin ;F:\Gwaith RnDSpace Junit;C:\Program Files Java jdk1.6.0_10 jre lib rt.jar;F:\Utpal Softs Softs Eclipse-java-indigo-win32 Eclipse plugins org.apache.ant_1.8.2.v20110505-1300 lib ant-launcher.jar;F:\Utpal Softs Softs Eclipse-java-indigo-win32 Eclipse plugins org.apache.ant_1.8.2.v20110505-1300 lib ant.jar;F:\Utpal Softs Softs Eclipse-java-indigo-win32 Eclipse plugins org.apache.ant_1.8.2.v20110505-1300 lib ant-junit.jar;F:\Utpal Softs Softs Eclipse-java-indigo-win32 Eclipse plugins org.apache.ant_1.8.2.v20110505-1300 lib ant-junit4.jar”/><property name=”ant.version” value=”Apache Ant(TM) version 1.8.2 a luniwyd ar Ragfyr 20 2010″/><property name=”java.vm.specification.name” value=”Java Virtual Machine Manyleb”/><property name=”java.vm.specification.version” value=”1.7″/><property name=”sun.cpu.endian” value=”ychydig”/><property name=”sun.os.patch.level” value=”Gwasanaeth Bacio 1″/><property name=”eclipse.pdebuild.home” value=”/F:/Utpal / Softs / Softs / Eclipse-java-indigo-win32 / eclips / plugins / org.eclipse.pde.build_3.7.0.v20110512-1320 /./”/><property name=”java.io.tmpdir” value=”C:\Defnyddwyr utpalb AppData Lleol Temp ”/><property name=”java.vendor.url.bug” value=”http://bugreport.sun.com/bugreport/”/><property name=”os.arch” value=”x86″/><property name=”java.awt.graphicsenv” value=”sun.awt.Win32GraphicsEnvironment”/><property name=”java.ext.dirs” value=”C:\Program Files Java jre7 lib est;C:\Windows Haul Java lib est”/><property name=”user.dir” value=”F:\Gwaith RnDSpace Junit adeiladu”/><property name=”build.test.dir” value=”F:\Gweithiwch RnDSpace Junit profion bin ”/><property name=”line.separator” value=” “/><property name=”java.vm.name” value=”Java Hotspot(TM) cleient VM”/><property name=”basedir” value=”F:\Gwaith RnDSpace Junit”/><property name=”ant.java.version” value=”1.7″/><property name=”ant.core.lib” value=”F:\Utpal Softs Softs Eclipse-java-indigo-win32 Eclipse plugins org.apache.ant_1.8.2.v20110505-1300 lib ant.jar”/><property name=”file.encoding” value=”Cp1252″/><property name=”java.specification.version” value=”1.7″/><property name=”src.dir” value=”F:\Gwaith RnDSpace Junit src”/><property name=”ant.project.invoked-targedau” value=”prif”/></properties><amser testcase =”0.003″ name=”testAdd” classname =”com.home.junit.SampleAddTest”/>-<system-allan>

<![CDATA[]]>

</system-allan>-<system-gyfeiliorni>

<![CDATA[]]>

</system-gyfeiliorni></testsuite>

[/Code]

Casgliad:

  • APACHE ANT cyfleustodau sy'n seiliedig ar java a ddefnyddir gan y datblygwyr Java at y diben canlynol
    • I gynhyrchu'r binaries o'r cod ffynhonnell
    • I gynhyrchu javadocs ar gyfer y cod ffynhonnell
    • I redeg achosion prawf JUNIT ar sylfaen cod
  • ANT mewn cydweithrediad â JUNIT, helps the java developers to follow the Test Driven Development methodology

 

Tagged on: , ,
============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share