1.1 Dhaptar plugin kanggo mbangun ing Maven

Déwan ing Maven bisa dikonfigurasi kanthi fleksibel. Pangembang Maven wis nggawe puluhan plugin khusus, sing bisa digunakake kanthi fleksibel kanggo ngatur macem-macem bangunan. Sing paling populer ditampilake ing tabel ing ngisor iki:

plugin Katrangan
1 maven-compiler-plugin Ngatur kompilasi Jawa
2 maven-resources-plugin Ngontrol inklusi sumber daya ing perakitan
3 plugin sumber maven Ngontrol apa kode sumber kalebu ing perakitan
4 maven-katergantungan-plugin Ngontrol proses nyalin perpustakaan dependensi
5 maven-jar-plugin Plugin kanggo nggawe file jar pungkasan
6 plugin perang maven Plugin kanggo nggawe file perang pungkasan
7 maven-surefire-plugin Ngatur test roto
8 buildnumber-maven-plugin Ngasilake nomer mbangun

Saben plugin menarik kanthi cara dhewe, nanging kita kudu nganalisa kabeh. Ayo miwiti karo sing utama - plugin manajemen kompilasi.

1.2 Plugin kompilasi maven-compiler-plugin

Plugin paling populer sing ngidini sampeyan ngontrol versi kompiler lan digunakake ing meh kabeh proyek yaiku maven-compiler-plugin. Wis setelan gawan, nanging ing meh saben project padha kudu disetel maneh.

Ing versi sing paling gampang, ing plug-in, sampeyan kudu nemtokake versi kode sumber Jawa lan versi mesin Java ing ngendi perakitan kasebut ditindakake:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version>
    <configuration>
        <source>1.11</source>
        <target>1.13</target>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>

Ing conto ing ndhuwur, kita nyetel telung opsi compiler Java: source, targetlan encoding.

Parameter kasebut sourcengidini kita nyetel versi Jawa kanggo sumber kita. Parameter kasebut targetminangka versi mesin Java sing pengin sampeyan ngumpulake kelas. Yen ora ana kode utawa versi mesin Java sing ditemtokake, mula standar yaiku 1.3

Pungkasan, parameter kasebut encodingngidini sampeyan nemtokake enkoding file Java. We dituduhake UTF-8. Saiki meh kabeh sumber disimpen ing UTF-8. Nanging yen parameter iki ora ditemtokake, banjur enkoding sistem operasi saiki bakal dipilih. Kanggo Windows, iki encoding Windows-1251.

Ana uga kasus nalika komputer mbangun wis diinstal sawetara versi Jawa: kanggo mbangun modul beda lan/utawa proyek beda. Ing kasus iki, JAVA_HOMEmung path menyang salah siji saka wong-wong mau bisa ditemtokake ing variabel.

Kajaba iku, ana macem-macem implementasi mesin Java: OpenJDK, OracleJDK, Amazon JDK. Lan luwih gedhe proyek kasebut, luwih kompleks strukture. Nanging sampeyan bisa kanthi tegas nyetel path menyang compiler javac kanggo plugin nggunakake tag . Iki ditambahake khusus kanggo kesempatan iki.

Plugin maven-compiler-pluginduwe rong tujuan:

  • compiler:compile- kompilasi sumber, kanthi standar sing ana gandhengane karo tahap kompilasi
  • compiler:testCompile- kompilasi tes, kanthi standar digandhengake karo fase kompilasi tes.

Sampeyan uga bisa nemtokake dhaptar argumen sing bakal dikirim menyang kompiler javac ing baris perintah:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version>
    <configuration>
        <compilerArgs>
            <arg>-verbose</arg>
            <arg>-Xlint:all,-options,-path<arg>
        </compilerArgs>
    </configuration>
</plugin>

1.3 Plugin kanggo nggawe file jar maven-jar-plugin

Yen sampeyan pengin mbangun perpustakaan jar dhewe karo Maven, sampeyan kudu maven-jar-plugin. Plugin iki nindakake akeh perkara sing migunani.

Conto plugin kasebut:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <includes>
            <include>**/properties/*</include>
        </includes>
        <archive>
           <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
        </archive>
    </configuration>
</plugin>

Kaping pisanan, bisa digunakake kanggo nemtokake file sing bakal mlebu perpustakaan lan sing ora bakal. Nggunakake tag <include>ing bagean kasebut, <includes>sampeyan bisa nemtokake dhaptar direktori sing isine kudu ditambahake menyang perpustakaan .

Kapindho, saben jar kudu duwe manifest ( file MANIFEST.MF ). Plugin kasebut dhewe bakal dilebokake ing papan sing tepat ing perpustakaan, sampeyan mung kudu nemtokake dalan sing bakal ditindakake. Tag digunakake kanggo iki <manifestFile>.

Pungkasan, plugin bisa ngasilake manifest dhewe. Kanggo nindakake iki, tinimbang tag, <manifestFile>sampeyan kudu nambah tag <manifest>lan nemtokake data kanggo manifest ing mangsa ngarep. Tuladha:

<configuration>
    <archive>
        <manifest>
            <addClasspath>true</addClasspath>
            <classpathPrefix>lib/</classpathPrefix>
            <mainClass>com.codegym.MainApplication</mainClass>
        </manifest>
    </archive>
</configuration>

Tag kasebut <addClasspath>nemtokake manawa arep ditambahake menyang manifest CLASSPATH.

Tag <classpathPrefix>ngidini sampeyan nambahake awalan (ing conto lib) sadurunge saben sumber. Nemtokake ater-ater ing <classpathPrefix>ngidini sampeyan nyelehake dependensi ing folder sing kapisah.

Ya, sampeyan bisa nyelehake perpustakaan ing perpustakaan liyane. Lan ana akeh surprises nunggu sampeyan nalika sampeyan kudu pass path menyang file sifat nang endi wae, kang ing perpustakaan jar, kang ing perpustakaan jar.

Pungkasan, tag kasebut <mainClass>nuduhake kelas eksekusi utama. "Apa kelas eksekusi utama? ", - sampeyan takon. Lan bab iku mesin Jawa bisa mbukak program sing ditemtokake ora mung dening kelas Jawa, nanging uga file jar. Lan kanggo kasus iki, kelas wiwitan utama dibutuhake.

1.4 Mbangun nomer generasi plugin buildnumber-maven-plugin

Asring banget, perpustakaan jar lan file perang kalebu informasi kanthi jeneng proyek lan versi, uga versi perakitan. Iki ora mung migunani kanggo ngatur dependensi, nanging uga nyederhanakake tes: jelas ing versi perpustakaan endi kesalahan kasebut diatasi lan ditambahake.

Paling asring, tugas iki ditanggulangi kaya iki - nggawe file khusus application.propertiessing ngemot kabeh informasi sing dibutuhake lan kalebu ing perakitan. Sampeyan uga bisa ngatur skrip mbangun supaya data saka file iki pindhah menyang MANIFEST.MFetc.

Nanging sing paling menarik yaiku Maven duwe plugin khusus sing bisa ngasilake file application.properties. Kanggo nindakake iki, sampeyan kudu nggawe file kasebut lan isi karo template data khusus. Tuladha:

# application.properties
app.name=${pom.name}
app.version=${pom.version}
app.build=${buildNumber}

Nilai kabeh telung parameter bakal diganti ing tahap mbangun.

Parameter pom.namelan pom.versionbakal dijupuk langsung saka pom.xml. Lan kanggo ngasilake nomer mbangun unik ing Maven, ana plugin khusus - buildnumber-maven-plugin. Deleng conto ing ngisor iki:

<packaging>war</packaging>
<version>1.0</version>
<plugins>
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <version>1.2</version>
        <executions>
            <execution>
                <phase>validate</phase>
                <goals>
                    <goal>create</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <revisionOnScmFailure>true</revisionOnScmFailure>
            <format>{0}-{1,date,yyyyMMdd}</format>
            <items>
                 <item>${project.version}</item>
                 <item>timestamp</item>
            </items>
        </configuration>
    </plugin>
</plugins>

Ing conto ing ndhuwur, ana telung perkara penting. Kaping pisanan, plugin kasebut dhewe kanggo nyetel versi perakitan . Kapindho, kasebut bakal mbukak sajrone fase validasi (fase pisanan) lan ngasilake nomer mbangun - ${buildNumber}.

Lan kaping telune, format nomer perakitan iki dituduhake, sing dipasang saka sawetara bagean . Iki versi project project.versionlan wektu saiki diwenehi dening cithakan. Format cithakan kasebut ditemtokake dening kelas Jawa MessageFormat.