Programování

Automatizujte svůj proces sestavování pomocí prostředí Java a Ant

Definovaný proces je jedním z nejpotřebnějších, ale často nejméně používaných nástrojů při vývoji softwaru. Je to od přírody režijní úkol, který doprovází vývojové úsilí. Definovaný proces sestavení zajišťuje, že software ve vašem vývojovém projektu je vytvářen přesně stejným způsobem pokaždé, když je sestavení provedeno. Vzhledem k tomu, že proces sestavování se stává složitějším - například s sestavením EJB nebo dalšími úkoly - je stále důležitější dosáhnout takové standardizace. Měli byste co nejvíce vytvořit, zdokumentovat a automatizovat přesnou sérii kroků.

Proč potřebuji definovaný proces sestavení?

Definovaný proces sestavení je nezbytnou součástí každého vývojového cyklu, protože pomáhá překlenout mezeru mezi vývojovým, integračním, testovacím a produkčním prostředím. Samotný proces sestavení urychlí migraci softwaru z jednoho prostředí do druhého. Rovněž odstraňuje mnoho problémů souvisejících s kompilací, cestou ke třídě nebo vlastnostmi, které mnoho projektů stojí čas a peníze.

Co je Ant?

Ant je skriptovací nástroj nezávislý na platformě, který vám umožňuje konstruovat vaše sestavovací skripty stejným způsobem jako nástroj „make“ v C nebo C ++. V Ant můžete použít velké množství integrovaných úkolů bez jakéhokoli přizpůsobení. Některé z nejdůležitějších úkolů jsou uvedeny v následující tabulce, ale jsou vysvětleny podrobněji v následujícím příkladu.

Zde je několik užitečných příkazů, které jsou součástí distribuce Ant.

PříkazPopis
MravenecPoužívá se k provedení dalšího mravenčího procesu z aktuálního.
CopydirSlouží ke kopírování celého adresáře.
Zkopírovat souborSlouží ke kopírování jednoho souboru.
ŽivotopisyZpracovává balíčky / moduly načtené z úložiště CVS.
VymazatOdstraní buď jeden soubor, nebo všechny soubory v zadaném adresáři a jeho podadresářích.
DeltreeOdstraní adresář se všemi jeho soubory a podadresáři.
ExecProvede systémový příkaz. Když je zadán atribut os, pak je příkaz proveden pouze tehdy, když je Ant spuštěn na jednom ze specifikovaných operačních systémů.
DostatZíská soubor z adresy URL.
SkleniceSklenice sady souborů.
JávaSpustí třídu Java v rámci spuštěného (Ant) virtuálního počítače nebo rozvětví jiný virtuální počítač, pokud je zadán.
JavacZkompiluje zdrojový strom v běžícím (Ant) virtuálním počítači.
Javadoc / Javadoc2Generuje dokumentaci kódu pomocí nástroje javadoc.
MkdirVytvoří adresář.
VlastnictvíNastaví vlastnost (podle názvu a hodnoty) nebo sadu vlastností (ze souboru nebo prostředku) v projektu.
RmicSpustí kompilátor rmic pro určitou třídu.
TstampNastaví vlastnosti DSTAMP, TSTAMP a TODAY v aktuálním projektu.
StylZpracuje sadu dokumentů pomocí XSLT.

I když jsou k dispozici další nástroje pro vytváření softwarových verzí, Ant se snadno používá a lze jej zvládnout během několika minut. Kromě toho vám Ant umožňuje vytvářet rozšířené funkce rozšířením některých jeho tříd. Tuto expanzi ukážu v následujícím příkladu.

Co potřebuji k použití Ant?

Chcete-li spustit Ant, musíte nainstalovat tři komponenty: JDK, analyzátor XML a Ant (odkazy najdete v Zdrojích).

V mnoha případech je analyzátor XML součástí souborů lib distribuovaných pomocí běhu servletu nebo webového serveru. Pokud ne, postačí bezplatný analyzátor XML z java.sun.com.

Instalace Ant spočívá ve stažení souborů, přidání knihoven tříd do cesty ke třídě a přidání binárních souborů Ant do cesty.

Příklad scénáře

Tento ukázkový scénář by vám měl pomoci ukázat hodnotu Antu a poskytnout vhled do jeho výhod a toho, jak jej můžete použít.

Protože velké množství současného vývoje prostředí Java je zaměřeno na prostředí Java na straně serveru, vybral jsem pro příklad aplikaci na straně serveru. Vývojáři pracující na aplikacích Java na straně serveru se obvykle zajímají o kompilaci servletů, nasazení souborů JSP a nasazení souborů HTML, konfiguračních souborů nebo obrázků.

Společné schéma pro toto sestavení by zahrnovalo vývoj malých skriptů v jazycích specifických pro platformu na základě operačního systému serveru. Například vývojář pracující na počítači NT by mohl vytvořit dávkový soubor, který provede úkoly kompilace a poté spustí nasazení. Pokud by však produkční prostředí mělo Unix nebo Linux, musel by vývojář skript přepsat a zajistit tak synchronizaci skriptů.

Dobře, ukaž mi, jak to funguje

Doufám tedy, že vás přesvědčil o potřebě používat Ant a ukázal, jak jednoduchá je instalace. Nyní vám ukážu, jak jednoduchý je Ant, který se má použít, tím, že projdeme příkladem, který provádí jednoduchou kompilaci a nasazení.

Jednoduchý proces sestavení pomocí Ant (simple.xml)

Ve výše uvedeném příkladu je toho hodně k vysvětlení. Nejprve byste měli pochopit strukturu souboru simple.xml. Jedná se o dobře formátovaný soubor XML obsahující entitu projektu, která se skládá z několika cílových entit.

První řádek obsahuje informace o celkovém projektu, který má být postaven.

Nejdůležitějšími prvky projektové linie jsou výchozí a basedir.

The výchozí atribut odkazuje na výchozí cíl, který má být spuštěn. Protože Ant je nástroj pro vytváření příkazového řádku, je možné provést pouze podmnožinu cílových kroků v souboru Ant. Mohl bych například provést následující příkaz:

% ant -buildfile simple.xml init 

Tím se provede mravenec a spusťte soubor simple.xml, dokud inic cíle je dosaženo. V tomto příkladu je tedy výchozí hodnota nasadit. Proces Ant vyvolaný v následujícím řádku proběhne přes simple.xml soubor až do nasadit je dosažen příkaz:

% ant -buildfile simple.xml 

The basedir Atribut je docela vysvětlující, protože je to základní adresář, ze kterého jsou načteny relativní odkazy obsažené v souboru sestavení. Každý projekt může mít pouze jeden basedir atribut, takže si můžete vybrat, zda chcete zahrnout plně kvalifikované umístění adresáře, nebo rozdělit velký soubor projektu na menší soubory projektu s různými basedir atributy.

Dalším sledovaným řádkem je cílový řádek. Zde jsou zobrazeny dvě různé verze:

The cílová prvek obsahuje čtyři atributy: název, -li, pokud, a záleží. Ant vyžaduje název atribut, ale další tři atributy jsou volitelné.

Použitím záleží, můžete skládat úkoly Ant tak, aby závislá úloha nebyla zahájena, dokud nebude dokončena úloha, na které záleží. Ve výše uvedeném příkladu se čistá úloha nespustí, dokud inic úkol byl dokončen. The záleží Atribut může také obsahovat seznam hodnot oddělených čárkami označujících několik úkolů, na kterých závisí úkol v diskusi.

The -li a pokud příkazy umožňují určit příkazy, které mají být provedeny -li je nastavena určitá vlastnost nebo pokud tato vlastnost je nastavena. The -li se provede, když je nastavena hodnota vlastnosti, a pokud se provede, pokud není nastavena hodnota. Můžete použít k dispozici příkaz k nastavení těchto vlastností, jak je znázorněno v následujícím příkladu, nebo je můžete nastavit pomocí příkazového řádku.

The inic cíl z jednoduchého příkladu obsahuje čtyři řádky vlastnictví příkazy, jak je znázorněno zde:

Tyto vlastnictví řádky umožňují určit běžně používané adresáře nebo soubory. Vlastnost je dvojice jednoduchých názvů a hodnot, která vám umožní odkazovat na adresář nebo soubor jako na logickou entitu namísto fyzické.

Pokud byste chtěli odkazovat na sourceDir proměnné později v souboru Ant, můžete jednoduše použít následující syntaxi k upozornění Ant k získání hodnoty pro tuto značku: $ {sourceDir}.

Dva další příkazy přítomné ve výše uvedeném souboru sestavení jsou:

Tyto příkazy se používají k zajištění toho, aby v souboru nebyly žádné cizí soubory outputDir (nebo třídy adresář, pokud je dereferencován, jak je uvedeno výše). První příkaz odebere celý strom obsažený pod outputDir. Druhý příkaz vytvoří adresář znovu.

Posledním řádkem hlavního zájmu vývojáře je následující kompilační řádek:

The javac příkaz vyžaduje zdrojový adresář (vstupní umístění souborů .java) a cílový adresář (výstupní umístění souboru .classes). Je důležité si uvědomit, že všechny adresáře musí existovat před spuštěním mravenec příkaz nebo být vytvořen pomocí mkdir příkaz. Ant nevytváří adresáře založené na intuici, takže musíte vytvořit outputDir, za použití mkdir příkaz před výše uvedeným krokem kompilace.

Po kompilovat úkol byl dokončen nasadit Úkol provede operaci kopírování a přesune všechny soubory JSP ze zdrojového adresáře do adresáře nasazení. Pomocí copydir příkaz zkopírujete celý adresář JSP z jednoho umístění do druhého. Použil jsem zkopírovat soubor příkaz pro kopírování jednoho souboru vlastností jako součást sestavení.

Vysvětlení příkladu trvalo několik řádků, ale mělo by být zřejmé, že Ant je snadno použitelný nástroj. Použitím tohoto buildfile jako výchozího bodu byste měli být schopni začlenit Ant do svého vývojového úsilí. The mravenec příkazy zobrazené ve výše uvedeném příkladu mají další funkce, z nichž některé budou popsány v tomto článku, zbytek je ponechán na vás spolu s odkazy na dokumentaci.

Důležité úkoly

Je na vás, abyste si přečetli vestavěné úlohy obsažené v distribuci Ant. Informace o jednotlivých příkazech najdete v uživatelské příručce v části Zdroje. Jako příklady dalších možností, které má správce sestav k dispozici bez jakéhokoli přizpůsobení, jsem vybral dva běžně používané příkazy.

Kompilace kódu (včetně EJB)

V předchozím jednoduchém příkladu jste viděli jednoduchou formu javac příkaz. Nyní, pokud to prozkoumáte podrobněji, uvidíte, že můžete určit příznaky kompilace, jako je zastarání, ladění nebo optimalizace, stejně jako soubory, které budou nebo nebudou zahrnuty do kompilace.

Můžete použít zahrnout / vyloučit subjekty uvnitř javac úkol zahrnout / vyloučit soubory odpovídající vzoru v souboru název atribut z kompilace. Z výše uvedeného příkladu chcete zahrnout soubory obsažené v libovolném adresáři končícím na .java, ale současně chcete vyloučit soubory s názvem Script.java, pokud vlastnost bsf. přítomen je nastavena na hodnotu true.

Nastavil jsi bsf. přítomen vlastnost pomocí následující úlohy, která prohledá cestu ke třídě zadaného názvu třídy a sad bsf. přítomen podle výsledků hledání:

The javac příkaz nebude obsahovat soubory zvané version.txt z kompilace na základě výše uvedeného příkazu vyloučit.

Generování javadoc

Dalším úkolem, který může Ant pomoci automatizovat, je generování javadocu. K vygenerování javadocu můžete použít následující příkaz:

Balíčky určují celkové balíčky, které bude obsahovat javadoc. The sourcepath atribut směřuje k umístění zdrojových souborů. The javadoc Příkaz také poskytuje atributy umožňující určit název okna a dokumentu. Ve spodní části každé stránky javadoc můžete také použít oznámení o autorských právech pomocí dno atribut.

Může Ant dělat XYZ?

V tomto okamžiku jste viděli některé z možných úkolů v procesu sestavování, které Ant může automatizovat. Tyto úkoly jsou zahrnuty z krabice v Ant. Možná budete chtít přizpůsobit Ant, aby vám pomohl provádět některé obtížnější úkoly, jako je vytváření EJB a provádění vzdálené správy konfigurace. Někteří z vás možná budou chtít zvýšit možnosti hlášení Ant nebo vytvořit uživatelské rozhraní, které může spustit proces Ant.

Jednoduchá odpověď na otázku „Může Ant udělat XYZ?“ je „Ano, ale možná to budete muset přizpůsobit.“

Prodloužení Ant

V tomto okamžiku je zajímavé diskutovat o dvou rozšířeních Ant. Jedná se o zvýšené hlášení a schopnost vzdáleně distribuovat kód pomocí Ant.

Vylepšení hlášení

$config[zx-auto] not found$config[zx-overlay] not found