Apache ANT opetusohjelma

⚡ Älykäs yhteenveto

Apache Ant on avoimen lähdekoodin, Java-pohjainen käännöstyökalu, joka automatisoi kääntämisen, testauksen, pakkaamisen ja käyttöönoton yhden build.xml-tiedoston avulla. Integroitu Selenium ja TestNG, se tekee testien suorituksesta toistettavaa, järjestelmällistä ja helppoa missä tahansa.

  • 🐜 Ydinrooli: Ant tallentaa ja suorittaa koontivaiheet peräkkäin XML-määritystiedostosta.
  • ⚙️ Rakennuksen elinkaari: Yksi tiedosto käsittelee siivouksen, kääntämisen, luokkapolun asettamisen, suorituksen ja raportoinnin.
  • 📦 build.xml-tiedoston rakenne: Projekti-, kohde-, tehtävä- ja ominaisuustunnisteet määrittelevät jokaisen rakennusvaiheen.
  • 🔧 Asennus: Aseta ANT_HOME-muuttuja ja lisää %ANT_HOME%\bin järjestelmän polkuun.
  • 🧪 Selenium ja TestNG: Ant kutsuu testng.xml-tiedostoa, jotta paketit toimivat koonnin aikana.
  • 🚀 Riippuvuuksien hallinta: Kolmannen osapuolen JAR-polut on keskitetty, mikä parantaa luotettavuutta ja käyttöönottoa.

Apache-muurahainen Selenium

Mikä on Apache Ant?

Täydellistä ohjelmistotuotetta luotaessa on huolehdittava erilaisista kolmannen osapuolen API:ista, niiden luokkapolusta, aiempien suoritettavien binääritiedostojen puhdistamisesta, lähdekoodimme kääntämisestä, lähdekoodin suorittamisesta, raporttien ja käyttöönottokoodikannan luomisesta jne. Jos nämä tehtävät ovat tehdä yksitellen manuaalisesti, se vie valtavasti aikaa ja prosessi on altis virheille.

Tässä tulee esiin Anten kaltaisen rakennustyökalun merkitys. Se tallentaa, suorittaa ja automatisoi kaikki prosessit Ant:n asetustiedostossa (yleensä build.xml) mainitussa järjestyksessä.

Apache Ant

Ant-rakennuksen etu

  1. Ant luo sovelluksen elinkaaren eli puhdistaa, kääntää, asettaa riippuvuuden, suorittaa, raportoi jne.
  2. Kolmannen osapuolen API-riippuvuuden voi asettaa Ant eli muun Jar-tiedoston luokkapolun määrittää Ant-koontitiedosto.
  3. Täydellinen sovellus luodaan päästä päähän -toimitusta ja käyttöönottoa varten.
  4. Se on yksinkertainen rakennustyökalu, jossa kaikki asetukset voidaan tehdä XML-tiedostolla ja joka voidaan suorittaa komentoriviltä.
  5. Se tekee koodistasi puhtaan, koska kokoonpano on erillinen todellisesta sovelluslogiikasta.

Kuinka asentaa Ant

Antin asentamisen vaiheet Windows on seuraava

Vaihe 1) Mene https://ant.apache.org/bindownload.cgi Tai Lataa .zip-tiedosto osoitteesta apache-ant-1.9.4-bin.zip

Asenna Ant

Vaihe 2) Pura kansio ja siirry ja kopioi polku puretun kansion juureen

Asenna Ant

Vaihe 3) Siirry kohtaan Käynnistä -> Tietokone -> napsauta hiiren kakkospainikkeella tätä ja valitse "Ominaisuudet" ja napsauta sitten Järjestelmän lisäasetukset

Asenna Ant

Vaihe 4) Uusi ikkuna avautuu. Napsauta "Ympäristömuuttuja…" -painiketta.

Asenna Ant

Vaihe 5) Napsauta New…-painiketta ja aseta muuttujan nimeksi ANT_HOME ja muuttujan arvo puretun kansion juuripoluksi ja napsauta OK.

Asenna Ant

Vaihe 6) valitse nyt luettelosta 'Path'-muuttuja ja napsauta 'Muokkaa' ja liitä; %ANT_HOME%\bin.

Asenna Ant

Käynnistä järjestelmä uudelleen kerran ja olet valmis käyttämään Ant build -työkalua nyt.

Vaihe 7) Ant-version tarkistaminen komentorivin avulla:

Ant – versio

Asenna Ant

Build.xml:n ymmärtäminen

Build.xml on Ant-rakennustyökalun tärkein osa. a Java projekti, kaikki puhdistukseen, asennukseen, käännökseen ja käyttöönottoon liittyvät tehtävät mainitaan tässä tiedostossa XML-muodossa. Kun suoritamme tämän XML-tiedoston komentorivillä tai millä tahansa IDE-laajennuksella, kaikki tähän tiedostoon kirjoitetut ohjeet suoritetaan peräkkäin.

Ymmärretään esimerkki build.XML:n koodista

  • Projektitunnistetta käytetään mainitsemaan projektin nimi ja baseir-attribuutti. Basedir on sovelluksen juurihakemisto
    <project name="YTMonetize" basedir=".">
  • Ominaisuustunnisteita käytetään muuttujina build.XML-tiedostossa, jota käytetään jatkossa
<property name="build.dir" value="${basedir}/build"/>
		<property name="external.jars" value=".\resources"/>
	<property name="ytoperation.dir" value="${external.jars}/YTOperation"/>
<property name="src.dir"value="${basedir}/src"/>
  • Target tagit, joita käytetään vaiheina, jotka suoritetaan peräkkäisessä järjestyksessä. Name-attribuutti on kohteen nimi. Yhdessä build.xml-tiedostossa voi olla useita kohteita
    <target name="setClassPath">
  • polkutunnistetta käytetään niputtamaan kaikki tiedostot loogisesti, jotka ovat yhteisessä paikassa
    <path id="classpath_jars">
  • pathelement-tunniste asettaa polun yhteisen sijainnin juureen, johon kaikki tiedostot on tallennettu
    <pathelement path="${basedir}/"/>
  • pathconvert-tunnistetta käytetään muuntamaan kaikkien polkutunnisteen sisällä olevien yleisten tiedostojen polut järjestelmän luokkapolkumuotoon
    <pathconvert pathsep=";" property="test.classpath" refid="classpath_jars"/>
  • fileset-tagi, jota käytetään luokkapolun asettamiseen eri kolmannen osapuolen jarille projektissamme
    <fileset dir="${ytoperation.dir}" includes="*.jar"/>
  • Kaikutunnistetta käytetään tekstin tulostamiseen konsoliin
<echo message="deleting existing build directory"/>
  • Poista tagi puhdistaa tiedot annetusta kansiosta
<delete dir="${build.dir}"/>
  • mkdir-tunniste luo uuden hakemiston
	<mkdir dir="${build.dir}"/>
  • javac-tunniste, jota käytetään Java-lähdekoodin kääntämiseen ja .class-tiedostojen siirtämiseen uuteen kansioon
        <javac destdir="${build.dir}" srcdir="${src.dir}">
	<classpath refid="classpath_jars"/>
</javac>
  • jar-tunniste luo jar-tiedoston .class-tiedostoista
	<jar destfile="${ytoperation.dir}/YTOperation.jar" basedir="${build.dir}">
  • manifest-tunniste asettaa pääluokkasi suoritusta varten
<manifest>
		<attribute name="Main-Class" value="test.Main"/>
</manifest>
  • 'depends'-attribuutti, jota käytetään saamaan yksi kohde riippuvaiseksi toisesta kohteesta
<target name="run" depends="compile">
  • java-tunniste suorittaa päätoiminnon käännöskohdeosiossa luodusta jarista
<java jar="${ytoperation.dir}/YTOperation.jar" fork="true"/>

Suorita Ant käyttämällä Eclipse kytkeä

Suorita Ant from eclipse siirtymällä build.xml-tiedostoon -> napsauta tiedostoa hiiren kakkospainikkeella -> Suorita nimellä… -> napsauta Build file

Suorita Ant käyttämällä Eclipse Kytkeä

esimerkki

Otamme pienen näyteohjelman, joka selittää Ant-toiminnallisuuden erittäin selkeästi. Projektirakenteemme näyttää tältä -

Suorita Ant käyttämällä Eclipse Kytkeä

Tässä esimerkissä meillä on 4 kohdetta

  1. Aseta luokkapolku ulkoisille purkeille,
  2. Puhdista aiemmin noudatettu koodi
  3. Kääntää olemassa olevaa Java-koodia
  4. Suorita koodi

Guru99AntClass.class

package testAnt;		
import java.util.Date;		

public class Guru99AntClass {				
   public static void main(String...s){									       
		System.out.println("HELLO GURU99 ANT PROGRAM");					        
		System.out.println("TODAY's DATE IS->"+ currentDate() );					  
}		    		   
public static String currentDate(){					        
	return new Date().toString();					  
	}		
}

Build.xml

 
<?xml version="1.0" encoding="UTF-8"	standalone="no"?>									
<!--Project tag used to mention the project name, and basedir attribute will be the root directory of the application-->	

<project name="YTMonetize" basedir=".">								
     <!--Property tags will be used as variables in build.xml file to use in further steps-->		

	<property name="build.dir" value="${basedir}/build"/>								
    <property name="external.jars" value=".\resources"/>								
		<property name="ytoperation.dir" value="${external.jars}/YTOperation"/>
<property name="src.dir"value="${basedir}/src"/>
<!--Target tags used as steps that will execute in sequential order. name attribute will be the name  of the target and < a name=OLE_LINK1 >'depends' attribute used to make one target to depend on another target -->		
	       <target name="setClassPath">					
			<path id="classpath_jars">						
				<pathelement	path="${basedir}/"/>					
			</path>				         
<pathconvert	pathsep=";"property="test.classpath" refid="classpath_jars"/>	
</target>				
	<target name="clean">						
		<!--echo tag will use to print text on console-->		
		<echo message="deleting existing build directory"/>						
		<!--delete tag will clean data from given folder-->		
		<delete dir="${build.dir}"/>						
	</target>				
<target name="compile" depends="clean,setClassPath">								
	<echo message="classpath:${test.classpath}"/>					
			<echo message="compiling.........."/>						
	<!--mkdir tag will create new director-->							
	<mkdir dir="${build.dir}"/>						
		<echo message="classpath:${test.classpath}"/>						
		<echo message="compiling.........."/>						
	<!--javac tag used to compile java source code and move .class files to a new folder-->		
	<javac destdir="${build.dir}" srcdir="${src.dir}">								
			<classpath refid="classpath_jars"/>						
	</javac>				
	<!--jar tag will create jar file from .class files-->		
	<jar	destfile="${ytoperation.dir}/YTOperation.jar"basedir="${build.dir}">								
	            <!--manifest tag will set your main class for execution-->		
						<manifest>				
							<attribute name="Main-Class" value="testAnt.Guru99AntClass"/>  
</manifest>		
</jar>				
    </target>				
	<target name="run" depends="compile">								
		<!--java tag will execute main function from the jar created in compile target section-->	
<java jar="${ytoperation.dir}/YTOperation.jar"fork="true"/>			
</target>				
	</project>				

Suorita Ant käyttämällä Eclipse kytkeä

Kuinka Suorittaa TestNG koodi Ant

Suorittaa TestNG koodi Ant

Täällä luomme luokan Testng menetelmät ja aseta luokkapolku Testaus tiedostossa build.xml.

Nyt testausmenetelmän suorittamiseksi luomme toisen testng.xml-tiedoston ja kutsumme tätä tiedostoa build.xml-tiedostosta.

Vaihe 1) Luomme "Guru99Muurahaisluokka.luokka” paketissa testAnt

Guru99AntClass.class

package testAnt;
import java.util.Date;
import org.testng.annotations.Test;		
public class Guru99AntClass {				
    @Test		  
	public void Guru99AntTestNGMethod(){					     
		System.out.println("HELLO GURU99 ANT PROGRAM");					
		System.out.println("TODAY's DATE IS->"+ currentDate() );					
	}		
	public static String currentDate(){					
		return new Date().toString();					
	}		
}		

Vaihe 2) Luo kohde tämän luokan lataamiseksi Build.xml:ssä

<!-- Load testNG and add to the class path of application -->
	<target name="loadTestNG" depends="setClassPath">
<!—using taskdef  tag we can add a task to run on the current project. In below line, we are adding testing task in this project. Using testing task here now we can run testing code using the ant script -->
		<taskdef resource="testngtasks" classpath="${test.classpath}"/>
</target>

Vaihe 3) Luo testng.xml

testng.xml

<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="YT"thread-count="1">
			<test name="GURU99TestNGAnt">
			<classes>
			   <class name="testAnt.Guru99AntClass">
	</class>
</classes>
</test>
</suite>

Vaihe 4) luoda Target Build.xml:ssä suorittaaksesi tämän TestNG koodi

<target name="runGuru99TestNGAnt" depends="compile">
<!-- testng tag will be used to execute testng code using corresponding testng.xml file. Here classpath attribute is setting classpath for testng's jar to the project-->
	<testng classpath="${test.classpath};${build.dir}">
<!—xmlfileset tag is used here to run testng's code using testing.xml file. Using includes tag we are mentioning path to testing.xml file-->
	 <xmlfileset dir="${basedir}" includes="testng.xml"/>
</testng>				

Vaihe 5) Täydellinen Build.xml

<?xml version="1.0"encoding="UTF-8"standalone="no"?>
<!--Project tag used to mention the project name, and basedir attribute will be the root directory of the application-->
			<project name="YTMonetize" basedir=".">
		       <!--Property tags will be used as variables in build.xml file to use in further steps-->
			<property name="build.dir"value="${basedir}/build"/>
<!-- put  testng related jar in the resource  folder -->
	      <property name="external.jars" value=".\resource"/>
				<property name="src.dir" value="${basedir}/src"/>
<!--Target tags used as steps that will execute in  sequential order. name attribute will be the name
    of the target and 'depends' attribute used to make one target to depend on another target-->
<!-- Load testNG and add to the class path of application -->
         <target name="loadTestNG"depends="setClassPath">
				<taskdef resource="testngtasks"classpath="${test.classpath}"/>
		</target>
		<target name="setClassPath">
		       <path id="classpath_jars">
					<pathelement path="${basedir}/"/>
					<fileset dir="${external.jars}" includes="*.jar"/>
         </path>
        <pathconvert pathsep=";"property="test.classpath"refid="classpath_jars"/>
	</target>
	<target name="clean">
              <!--echo tag will use to print text on console-->
	               <echo message="deleting existing build directory"/>
               <!--delete tag will clean data from given folder-->
	               <delete				dir="${build.dir}"/>
			</target>
<target name="compile"depends="clean,setClassPath,loadTestNG">
	         <echo message="classpath:${test.classpath}"/>
	               <echo	message="compiling.........."/>
		       <!--mkdir tag will create new director-->
		        <mkdir dir="${build.dir}"/>
					<echo message="classpath:${test.classpath}"/>
			<echo message="compiling.........."/>
	<!--javac tag used to compile java source code and move .class files to a new folder-->
	        <javac destdir="${build.dir}"srcdir="${src.dir}">
	             <classpath refid="classpath_jars"/>
		</javac>
  </target>
<target name="runGuru99TestNGAnt"depends="compile">
		<!-- testng tag will be used to execute testng code using corresponding testng.xml file -->
			<testng classpath="${test.classpath};${build.dir}">
               <xmlfileset dir="${basedir}"includes="testng.xml"/>
	</testng>
</target>
</project>

Vaihe 6) ulostulo

Suorittaa TestNG koodi Ant

Lataa yllä oleva tiedosto

Antin hallinnoidessa rakennusta ja TestNG kytkettynä, seuraava vaihe kytkee Antin suoraan Selenium WebDriver.

Muurahainen kanssa Selenium Web-ohjain

Tähän mennessä olemme oppineet, että Antin avulla voimme sijoittaa kaikki kolmannen osapuolen jar-tiedostot tiettyyn paikkaan järjestelmässä ja määrittää niiden polun projektillemme. Tällä menetelmällä asetamme kaikki projektimme riippuvuudet yhteen paikkaan ja teemme siitä luotettavamman kääntämisen, suorittamisen ja käyttöönoton kannalta.

Vastaavasti seleeniä käyttävissä testausprojekteissamme voimme helposti mainita seleeniriippuvuuden build.xml:ssä, eikä meidän tarvitse lisätä sen luokkapolkua manuaalisesti sovellukseemme.

Joten nyt voit jättää huomioimatta alla mainitun perinteisen tavan asettaa luokkapolut projektille.

Muurahainen kanssa Selenium Web-ohjain

Esimerkiksi:

Aiomme muokata edellistä esimerkkiä

Vaihe 1) Aseta ominaisuus seleen.jars arvoksi seleeniin liittyvä jar resurssikansiossa

		<property name="selenium.jars" value=".\selenium"/>

Vaihe 2) Lisää seleenitiedostot kohde-setClassPathiin

<target name="setClassPath">
	        <path id="classpath_jars">
				<pathelement path="${basedir}/"/>	
				<fileset dir="${external.jars}" includes="*.jar"/>
	            <!-- selenium jar added here -->
  		            <fileset dir="${selenium.jars}" includes="*.jar"/>
         </path>		

Vaihe 3) Täydellinen Build.xml:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!--Project tag used to mention the project name, and basedir attribute will be the root directory of the application-->
			<project name="YTMonetize" basedir=".">
                  <!--Property tags will be used as variables in build.xml file to use in further steps-->
				<property name="build.dir" value="${basedir}/build"/>
      <!-- put  testng related jar in the resource  folder -->
	       <property name="external.jars" value=".\resource"/>
<!-- put  selenium related jar in resource  folder -->
     <property name="selenium.jars" value=".\selenium"/>
			<property name="src.dir" value="${basedir}/src"/>
				<!--Target tags used as steps that will execute in  sequential order. name attribute will be the name 
of the target and 'depends' attribute used to make one target to depend on another target-->
      <!-- Load testNG and add to the class path of application -->
       <target name="loadTestNG" depends="setClassPath">
				<taskdef resource="testngtasks" classpath="${test.classpath}"/>
		</target>
<target name="setClassPath">
	        <path id="classpath_jars">
				<pathelement path="${basedir}/"/>
					<fileset dir="${external.jars}" includes="*.jar"/>
			<!-- selenium jar added here -->
	            <fileset dir="${selenium.jars}"includes="*.jar"/>
        </path>
   <pathconvert pathsep=";" property="test.classpath" refid="classpath_jars"/>
</target>
<target name="clean">
<!--echo tag will use to print text on console-->
               <echo message="deleting existing build directory"/>
	                <!--delete tag will clean data from given folder-->
		               <delete dir="${build.dir}"/>
				</target>
<target name="compile" depends="clean,setClassPath,loadTestNG">
         <echo message="classpath:${test.classpath}"/>
                <echo message="compiling.........."/>
        <!--mkdir tag will create new director-->
	        <mkdir dir="${build.dir}"/>
          			<echo message="classpath:${test.classpath}"/>
			<echo message="compiling.........."/>
	<!--javac tag used to compile java source code and move .class files to new folder-->
     <javac destdir="${build.dir}"srcdir="${src.dir}">
             <classpath refid="classpath_jars"/>
	</javac>
</target>
<target name="runGuru99TestNGAnt" depends="compile">
		<!-- testng tag will be used to execute testng code using corresponding testng.xml file -->
			<testng classpath="${test.classpath};${build.dir}">
               <xmlfileset dir="${basedir}" includes="testng.xml"/>
		</testng>
	</target>
</project>

Vaihe 4) Muuta nyt aiemmin luotua luokkaa Guru99AntClass.java uudella koodilla.

Tässä tässä esimerkissä vaiheemme käyttämällä Selenium ovat:

  1. Mene https://demo.guru99.com/test/guru99home/
  2. Lue kaikki kurssilinkit yksitellen
  3. Tulosta kaikkien kurssien hyperlinkki konsolissa.

Guru99AntClass.java:

package testAnt;		
import java.util.List;		
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;	
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Test;

public class Guru99AntClass {

	@Test		
		public void Guru99AntTestNGMethod(){
	      WebDriver driver = new FirefoxDriver();	
		  driver.get("https://demo.guru99.com/test/guru99home/");
		  List<WebElement> listAllCourseLinks = driver.findElements(By.xpath("//div[@class='canvas-middle']//a"));							        
          for(WebElement webElement : listAllCourseLinks) {
			System.out.println(webElement.getAttribute("href"));
      	  }
		}
}		

Vaihe 5) Onnistuneen suorituksen jälkeen tulos näyttää tältä:

Muurahainen kanssa Selenium Web-ohjain

Lataa yllä oleva esimerkkitiedosto

UKK

Ant on proseduraaliseen rakentamiseen perustuva työkalu, jossa jokainen vaihe skriptataan manuaalisesti, kun taas Maven on deklaratiivinen ja hallitsee riippuvuuksia automaattisesti keskitetyn tietovaraston kautta. Ant antaa enemmän hallintaa; Maven tuo käytännön käytäntöjä.

Kyllä. Monet perinnöt Java ja Selenium projektit luottavat edelleen Antiin koontiversioissa ja jatkuvassa integroinnissa. Uudemmat projektit valitsevat usein Mavenin tai Gradle, mutta Ant on edelleen hyödyllinen hienojakoisessa koonnin hallinnassa.

Apache Ant 1.10.x on aktiivisesti ylläpidetty sarja ja vaatii Java 8 tai uudempi. Vanhempi 1.9.x-versio tukee perinteistä versiota JavaLataa binääritiedostot aina viralliselta ant.apache.org-sivustolta.

Kyllä. Tekoälyavustajat, kuten ChatGPT tai Copilot scaffold build.xml -kohteet, ehdottavat tehtävämääritelmiä ja selittävät virheitä. RevTarkastele luotua XML-tiedostoa huolellisesti, koska polut ja riippuvuusversiot vaativat vielä varmennusta.

Tekoälyllä toimivat työkalut tuottavat TestNG ohjelmistopaketteja, optimoivat testien järjestystä ja merkitsevät Ant-kohteiden käynnistämiä epätasaisia ​​testejä. Ne vähentävät ylläpitotarvetta ehdottamalla paikannuskorjauksia ja analysoimalla koontiraportteja automaattisesti.

Ei. Ant voi kääntyä ja ajaa suoraan Java or JUnit testit myös. TestNG lisää yksinkertaisesti joustavan ohjelmistopaketin kokoonpanon testng.xml-tiedoston kautta, jonka Ant käynnistää testng-tehtävän avulla koontiversion aikana.

ANT_HOME kertoo käyttöjärjestelmälle, mihin Ant on asennettu, joten ant-komento suoritetaan mistä tahansa hakemistosta. Lisäät %ANT_HOME%\bin järjestelmän polkuun asennuksen aikana Windows.

Gradle on yleensä parempi uusille projekteille, koska se yhdistää Antin joustavuuden Maven-riippuvuuksien hallintaan ja nopeampiin inkrementaalisiin koonteihin. Valitse Ant pääasiassa olemassa olevien koontiskriptien ylläpitoon.

Tiivistä tämä viesti seuraavasti: