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é 20x (123.76 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Java