2. diel - Annotation processor v Jave - Tvorba Maven projektu
V minulej lekcii, Annotation processor v Jave - Úvod do anotácií , sme sa dozvedeli k čomu sú anotácie dobré a ako sa používajú.
Táto lekcia bude čisto o tvorbe Maven kostry projektu, ktorý použijeme v nasledujúcich Java tutoriáloch k demonštrácii využitie Java Annotation Processor.
Maven projekt
V projekte budeme využívať Maven, ktorý sa postará o jeho správnu štruktúru a závislosti. Pred pokračovaním presvedčte sa, že máte Maven nainštalovaný. Celý projekt sa bude skladať z nasledujúcich 3 modulov:
parent-module- Rodičovský modul zastrešujúcej ostatné moduly.annotation-processing- Tu bude uložený kód pre samotný Java Annotation Processor.annotations- Tu budú anotácia použité Java Annotation Processor a modulom pre aplikáciu.application- Tu bude kód aplikácie, ktorý bude využívať anotácie.
Tvorba kostry projektu
Začneme tým, že sa presunieme do adresára, kde budeme projekt tvoriť a vytvoríme koreňovú zložku projektu.
Koreňový pom.xml
Presuňte sa do tejto koreňového priečinka a založte nový prázdny
súbor pom.xml. Je dôležité dodržať jeho názov. Tento súbor
sa využíva pre Maven projekty a obsahuje kompletné informácie pre Maven.
Do súboru vložíme nasledujúce informácie:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cz.itnetwork.zdravic</groupId> <artifactId>parent-module</artifactId> <version>1.0.0-SNAPSHOT</version> <name>parent-module</name> <packaging>pom</packaging> <properties> <maven.compiler.target>11</maven.compiler.target> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.release>11</maven.compiler.release> <maven.compiler.encoding>UTF-8</maven.compiler.encoding> </properties> <modules> <!-- TODO vložit sem moduly --> </modules> <build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> </plugin> </plugins> </pluginManagement> </build> </project>
Týmto hovoríme Maven, že tento súbor bude slúžiť ako predok pre
všetky moduly, ktoré budeme tvoriť za moment. Obsahuje štandardné
informácie o projekte, ako sú: groupId, artifactId,
version, name a packaging. Nasleduje
položka properties, ktorá hovorí kompilátora, akú verziu Javy
budeme v projekte používať. V položke modules sa špecifikujú
všetky moduly, ktoré majú byť v projekte zahrnuté. Nakoniec je tu položka
build, ktorá hovorí Maven, akú verziu pluginu pre kompilovanie
má použiť.
Moduly
Začneme tvoriť jednotlivé moduly. Najskôr vytvoríme modul
annotations, ktorý nemá žiadne závislosti.
Vytvorenie modulu
annotations
V koreňovom priečinku si otvoríme príkazový riadok (na Windows kliknete v prieskumníkovi v danej zložke pravým tlačidlom za držanie Shift a vyberiete "Tu otvoriť príkazové okno") a vložíme do neho nasledujúci príkaz:
mvn archetype:generate \ -DarchetypeGroupId=org.apache.maven.archetypes \ -DarchetypeArtifactId=maven-archetype-quickstart \ -DarchetypeVersion=RELEASE
Po chvíli načítanie sa nám spustí sprievodcu tvorby modulu. Najskôr
nás požiada, aby sme vyplnili groupId a artifactId
(zadáme cz.itnetwork.zdravic a parent-module). Verziu
a balík môžeme potvrdiť stlačením klávesy Enter. Nakoniec sa
ukáže prehľad zadaných parametrov. Tento prehľad tiež potvrdíme klávesou
Enter a máme modul hotový. Teda takmer.
pom.xml modulu
Otvorte si ďalšie, novo vytvorený súbor pom.xml, ktorý
trochu zredukujeme. Pre tento modul stačí poznať len parent module a nič
viac. Žiadne ďalšie závislosti sa tu definovať nebudú. Môžete teda
odstrániť všetko okrem nastavenia modelVersion,
parent a artifactId:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <artifactId>annotations</artifactId> <parent> <artifactId>parent-module</artifactId> <groupId>cz.itnetwork.zdravic</groupId> <version>1.0.0-SNAPSHOT</version> <relativePath>../</relativePath> </parent> </project>
Modul
annotation-processing
Úplne rovnakým spôsobom založíme zvyšné dva moduly:
annotation-processing a application. Uvediem už len
pom.xml súbory pre jednotlivé moduly. V module
annotation-processing musíme pridať dve závislosti:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <artifactId>annotation-processing</artifactId> <parent> <artifactId>parent-module</artifactId> <groupId>cz.itnetwork.zdravic</groupId> <version>1.0.0-SNAPSHOT</version> <relativePath>../</relativePath> </parent> <dependencies> <dependency> <groupId>cz.itnetwork.zdravic</groupId> <artifactId>annotations</artifactId> <version>${project.parent.version}</version> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.1</version> </dependency> </dependencies> </project>
Prvý závislosť je na module annotations a druhá závislosť
je na knižnicu velocity-engine-core, ktorú budeme využívať v
budúcnosti.
Modul application
Tento modul má jedinú závislosť - modul annotations. Ďalej
musíme nastaviť spracovanie anotácií vo fáze kompilácie a
zároveň pridať vygenerované súbory do cesty pre kompiláciu výsledného
projektu. V tejto úlohe nám pomôžu Maven pluginy:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <artifactId>application</artifactId> <parent> <artifactId>parent-module</artifactId> <groupId>cz.itnetwork.zdravic</groupId> <version>1.0.0-SNAPSHOT</version> <relativePath>../</relativePath> </parent> <dependencies> <!-- cz.itnetwork.zdravic.annotations --> <dependency> <groupId>cz.itnetwork.zdravic</groupId> <artifactId>annotations</artifactId> <version>${project.parent.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.7</version> <executions> <execution> <id>add-source</id> <phase>generate-sources</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source>${project.build.directory}/generated-sources/</source> </sources> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <generatedSourcesDirectory> ${project.build.directory}/generated-sources/ </generatedSourcesDirectory> <annotationProcessorPaths> <path> <groupId>cz.itnetwork.zdravic</groupId> <artifactId>annotation-processing</artifactId> <version>${project.parent.version}</version> </path> </annotationProcessorPaths> <annotationProcessors> <annotationProcessor> cz.itnetwork.zdravic.annotationprocessing.ZdravicProcessor </annotationProcessor> </annotationProcessors> </configuration> </plugin> </plugins> </build> </project>
Prvý plugin, ktorý pridá generované triedy do projektu, sa nazýva
build-helper-maven-plugin. V jeho konfigurácii si môžete
všimnúť, že mu vlastne hovoríme: vo fáze generate-sources si
pridaj na zoznam triedy z priečinka
${project.build.directory}/generated-sources/.
Druhý plugin sa stará o samotnej spustení Annotation Processor. Najskôr mu nastavíme, kam má generované súbory ukladať a pridáme cestu k modulu, ktorý anotácie spracováva. Nakoniec sa vyberie processor, ktorý bude pluginom zavolaný. Týchto processor môže byť aj viacero:
<annotationProcessor> cz.itnetwork.zdravic.annotationprocessing.ZdravicProcessor <!-- Sem se může vložit další annotation processor --> </annotationProcessor>
Koreňový pom.xml
Na úplný koniec sa ešte presunieme do koreňového pom.xml
súboru a pridáme referencie na všetky tri vytvorené moduly.
<modules> <module>annotations</module> <module>annotation-processing</module> <module>application</module> </modules>
Týmto máme vytvorenú kostru projektu, na ktorú budeme v ďalších lekciách tohto kurzu nadväzovať.
V budúcej lekcii, Annotation processor v Jave - Hello annotation world , si predstavíme základné annotation processor a pozdravíme používateľa pomocou anotácie.
Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 21x (123.76 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Java
