1.1 Π‘ΠΏΠΈΡΡΠΊ Ρ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π² Maven
Π‘Π³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ΡΠΎ Π² Maven ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΡΠ²ΠΊΠ°Π²ΠΎ. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° Maven ΡΠ° ΡΡΠ·Π΄Π°Π»ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ Π΄Π΅ΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ, Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΡΠ²ΠΊΠ°Π²ΠΎ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΠΈ. ΠΠ°ΠΉ-ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈΡΠ΅ ΠΎΡ ΡΡΡ ΡΠ° ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈ Π² tableΡΠ° ΠΏΠΎ-Π΄ΠΎΠ»Ρ:
ΠΏΠ»ΡΠ³ΠΈΠ½ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | |
---|---|---|
1 | maven-ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ-ΠΏΠ»ΡΠ³ΠΈΠ½ | Π£ΠΏΡΠ°Π²Π»ΡΠ²Π° Java ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ |
2 | ΠΏΠ»ΡΠ³ΠΈΠ½ Π·Π° maven-ΡΠ΅ΡΡΡΡΠΈ | ΠΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ° Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΡΡΠΈ Π² ΡΠ±ΠΎΡΠΊΠ° |
3 | ΠΏΠ»ΡΠ³ΠΈΠ½ Π·Π° ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊ Π½Π° maven | ΠΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ° Π΄Π°Π»ΠΈ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡΡ code Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ Π² ΡΠ±ΠΎΡΠΊΠ° |
4 | maven-dependency-plugin | ΠΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ° ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ |
5 | maven-jar-plugin | ΠΠ»ΡΠ³ΠΈΠ½ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠΈΠ½Π°Π»Π΅Π½ jar ΡΠ°ΠΉΠ» |
6 | ΠΏΠ»ΡΠ³ΠΈΠ½ Π·Π° maven war | ΠΠ»ΡΠ³ΠΈΠ½ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»Π½ΠΈΡ Π²ΠΎΠ΅Π½Π΅Π½ ΡΠ°ΠΉΠ» |
7 | maven-surefire-ΠΏΠ»ΡΠ³ΠΈΠ½ | Π£ΠΏΡΠ°Π²Π»ΡΠ²Π° ΡΠ΅ΡΡΠΎΠ²ΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΡ |
8 | buildnumber-maven-plugin | ΠΠ΅Π½Π΅ΡΠΈΡΠ° Π½ΠΎΠΌΠ΅Ρ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ |
ΠΡΠ΅ΠΊΠΈ ΠΏΠ»ΡΠ³ΠΈΠ½ Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ ΠΏΠΎ ΡΠ²ΠΎΠΉ Π½Π°ΡΠΈΠ½, Π½ΠΎ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π³ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΈ. ΠΠ° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΡΠΎ - ΠΏΠ»ΡΠ³ΠΈΠ½Π° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ.
1.2 ΠΡΠΈΡΡΠ°Π²ΠΊΠ° Π·Π° ΠΊΠΎΠΌΠΏorΡΠ°Π½Π΅ maven-compiler-plugin
ΠΠ°ΠΉ-ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈΡΡ ΠΏΠ»ΡΠ³ΠΈΠ½, ΠΊΠΎΠΉΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΡΠ΅ versionΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° ΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΏΠΎΡΡΠΈ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, Π΅ maven-compiler-plugin
. ΠΠΌΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, Π½ΠΎ Π² ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ ΠΎΡΠ½ΠΎΠ²ΠΎ.
Π Π½Π°ΠΉ-ΠΏΡΠΎΡΡΠ°ΡΠ° version, Π² ΠΏΡΠΈΡΡΠ°Π²ΠΊΠ°ΡΠ°, ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ versionΡΠ° Π½Π° ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ code Π½Π° Java ΠΈ versionΡΠ° Π½Π° Java ΠΌΠ°ΡΠΈΠ½Π°ΡΠ°, ΠΏΠΎΠ΄ ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ΡΠΎ:
<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>
Π Π³ΠΎΡΠ½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π°Π΄Π°Π²Π°ΠΌΠ΅ ΡΡΠΈ ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ Π½Π° Java source
: target
ΠΈ encoding
.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡΡΡ source
Π½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΠΌ versionΡΠ° Π½Π° Java Π·Π° Π½Π°ΡΠΈΡΠ΅ ΠΈΠ·ΡΠΎΡΠ½ΠΈΡΠΈ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡΡΡ target
Π΅ versionΡΠ° Π½Π° Java ΠΌΠ°ΡΠΈΠ½Π°ΡΠ°, ΠΏΠΎΠ΄ ΠΊΠΎΡΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΊΠΎΠΌΠΏorΡΠ°ΡΠ΅ ΠΊΠ»Π°ΡΠΎΠ²Π΅ΡΠ΅. ΠΠΊΠΎ Π½Π΅ Π΅ ΡΠΊΠ°Π·Π°Π½ code or version Π½Π° Java ΠΌΠ°ΡΠΈΠ½Π°, ΡΠΎΠ³Π°Π²Π° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ 1.3
Π Π½Π°ΠΊΡΠ°Ρ, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΡΡ encoding
Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ codeΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Java ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅. ΠΠΈΠ΅ ΠΏΠΎΡΠΎΡΠΈΡ
ΠΌΠ΅ UTF-8
. Π‘Π΅Π³Π° ΠΏΠΎΡΡΠΈ Π²ΡΠΈΡΠΊΠΈ ΠΈΠ·ΡΠΎΡΠ½ΠΈΡΠΈ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Ρ Π² UTF-8
. ΠΠΎ Π°ΠΊΠΎ ΡΠΎΠ·ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π½Π΅ Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½, ΡΠΎΠ³Π°Π²Π° ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ·Π±ΡΠ°Π½ΠΎ ΡΠ΅ΠΊΡΡΠΎΡΠΎ codeΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΠ° Windows ΡΠΎΠ²Π° Π΅ codeΠΈΡΠ°Π½Π΅ΡΠΎ Windows-1251
.
ΠΠΌΠ° ΠΈ ΡΠ»ΡΡΠ°ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΊΠΎΠΌΠΏΡΡΡΡΡΡ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ ΠΈΠΌΠ° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π²Π΅ΡΡΠΈΠΈ Π½Π° Java: Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΈ/or ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ JAVA_HOME
Π² ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠΊΠ°Π·Π°Π½ ΡΠ°ΠΌΠΎ ΠΏΡΡΡΡ Π΄ΠΎ Π΅Π΄ΠΈΠ½ ΠΎΡ ΡΡΡ
.
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΠΈΠΌΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° Java ΠΌΠ°ΡΠΈΠ½Π°ΡΠ°: OpenJDK, OracleJDK, Amazon JDK. Π ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌ Π΅ ΠΏΡΠΎΠ΅ΠΊΡΡΡ, ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ½Π° Π΅ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΡΡΡΠΊΡΡΡΠ°. ΠΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΡΠΈΡΠ½ΠΎ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΠΏΡΡΡ Π΄ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° Π½Π° javac Π·Π° ΠΏΠ»ΡΠ³ΠΈΠ½Π°, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΌΠ°ΡΠΊΠ΅ΡΠ°
ΠΠ»ΡΠ³ΠΈΠ½ΡΡ maven-compiler-plugin
ΠΈΠΌΠ° Π΄Π²Π΅ ΡΠ΅Π»ΠΈ:
compiler:compile
β ΠΊΠΎΠΌΠΏorΡΠ°Π½Π΅ Π½Π° ΠΈΠ·ΡΠΎΡΠ½ΠΈΡΠΈ, ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΡΠ°Π·Π°ΡΠ° Π½Π° ΠΊΠΎΠΌΠΏorΡΠ°Π½Π΅compiler:testCompile
β ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π½Π° ΡΠ΅ΡΡΠΎΠ²Π΅, ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ ΡΠ²ΡΡΠ·Π°Π½Π° Ρ ΡΠ°Π·Π°ΡΠ° ΡΠ΅ΡΡ-ΠΊΠΎΠΌΠΏorΡΠ°Π½Π΅.
ΠΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ ΡΠΏΠΈΡΡΠΊ Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠ΅Π΄Π°Π΄Π΅Π½ΠΈ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° Π½Π° javac Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄:
<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 ΠΠΎΠ±Π°Π²ΠΊΠ° Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° jar ΡΠ°ΠΉΠ» maven-jar-plugin
ΠΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΎΡ Π±ΡΡΠΊΠ°Π½ΠΈ Ρ Maven, ΡΠ΅ Π²ΠΈ ΡΡΡΠ±Π²Π° Π΄ΠΎΠ±Π°Π²ΠΊΠ°ΡΠ° maven-jar. Π’ΠΎΠ·ΠΈ ΠΏΠ»ΡΠ³ΠΈΠ½ ΠΏΡΠ°Π²ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π½Π΅ΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ Π·Π° ΡΠ°ΠΊΡΠ² ΠΏΠ»ΡΠ³ΠΈΠ½:
<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>
ΠΡΡΠ²ΠΎ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΡΠΊΠ°Π·Π²Π°Π½Π΅ ΠΊΠΎΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΡΠ΅ Π²Π»ΡΠ·Π°Ρ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΠΈ ΠΊΠΎΠΈ Π½Π΅. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠ°Π³ΠΎΠ²Π΅ <include>
Π² ΡΠ΅ΠΊΡΠΈΡΡΠ°, <includes>
ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ ΡΠΏΠΈΡΡΠΊ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ, ΡΠΈΠ΅ΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈ ΠΊΡΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° .
ΠΡΠΎΡΠΎ, Π²ΡΠ΅ΠΊΠΈ Π±ΡΡΠΊΠ°Π½ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ° ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ ( ΡΠ°ΠΉΠ» MANIFEST.MF ). ΠΠ»ΡΠ³ΠΈΠ½ΡΡ ΡΠ°ΠΌ ΡΠ΅ Π³ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎΡΠΎ ΠΌΡΡΡΠΎ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ°, ΡΠ°ΠΌΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ ΠΏΠΎ ΠΊΠΎΠΉ ΠΏΡΡ Π΄Π° Π³ΠΎ ΠΏΠΎΠ΅ΠΌΠ΅ΡΠ΅. ΠΠ° ΡΠΎΠ²Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΅ΡΠΈΠΊΠ΅ΡΡΡ <manifestFile>
.
Π Π½Π°ΠΊΡΠ°Ρ, ΠΏΠ»ΡΠ³ΠΈΠ½ΡΡ ΠΌΠΎΠΆΠ΅ ΡΠ°ΠΌ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ. ΠΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π°, instead of ΡΠ°Π³, <manifestFile>
ΡΡΡΠ±Π²Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΡΠ°Π³ <manifest>
ΠΈ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ Π² Π½Π΅Π³ΠΎ Π΄Π°Π½Π½ΠΈ Π·Π° Π±ΡΠ΄Π΅ΡΠΈΡ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ. ΠΡΠΈΠΌΠ΅Ρ:
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.codegym.MainApplication</mainClass>
</manifest>
</archive>
</configuration>
ΠΡΠΈΠΊΠ΅ΡΡΡ <addClasspath>
ΡΠΊΠ°Π·Π²Π° Π΄Π°Π»ΠΈ Π΄Π° ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈ ΠΊΡΠΌ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ° CLASSPATH
.
Π’Π°Π³ΡΡ <classpathPrefix>
Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΠΏΡΠ΅ΡΠΈΠΊΡ (Π² ΠΏΡΠΈΠΌΠ΅ΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°) ΠΏΡΠ΅Π΄ΠΈ Π²ΡΠ΅ΠΊΠΈ ΡΠ΅ΡΡΡΡ. ΠΠΎΡΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠ΅ΡΠΈΠΊΡ Π² <classpathPrefix>
Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² ΠΎΡΠ΄Π΅Π»Π½Π° ΠΏΠ°ΠΏΠΊΠ°.
ΠΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² Π΄ΡΡΠ³Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°. Π ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·Π½Π΅Π½Π°Π΄ΠΈ, ΠΊΠΎΠΈΡΠΎ Π²ΠΈ ΠΎΡΠ°ΠΊΠ²Π°Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΠΈΡΠ΅ Π½ΡΠΊΡΠ΄Π΅ ΠΏΡΡΡ Π΄ΠΎ file ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΠΊΠΎΠΉΡΠΎ Π΅ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Π½Π° Π±ΡΡΠΊΠ°Π½ΠΈ, ΠΊΠΎΠΉΡΠΎ Π΅ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Π½Π° Π±ΡΡΠΊΠ°Π½ΠΈ.
Π Π½Π°ΠΊΡΠ°Ρ, ΡΠ°Π³ΡΡ <mainClass>
ΡΠΎΡΠΈ ΠΊΡΠΌ Π³Π»Π°Π²Π½ΠΈΡ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΠΊΠ»Π°Ρ. βΠΠ°ΠΊΡΠ² Π΅ Π³Π»Π°Π²Π½ΠΈΡΡ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΠΊΠ»Π°Ρ? ", - ΡΠΈ ΠΏΠΈΡΠ°Ρ. Π Π°Π±ΠΎΡΠ°ΡΠ° Π΅ ΡΠ°ΠΌ, ΡΠ΅ Java ΠΌΠ°ΡΠΈΠ½Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°, ΠΊΠΎΡΡΠΎ Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π½Π΅ ΡΠ°ΠΌΠΎ ΠΎΡ Java ΠΊΠ»Π°Ρ, Π½ΠΎ ΠΈ ΠΎΡ jar ΡΠ°ΠΉΠ». Π ΠΈΠΌΠ΅Π½Π½ΠΎ Π·Π° ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΡ Π½Π°ΡΠ°Π»Π΅Π½ ΠΊΠ»Π°Ρ.
1.4 ΠΠ»ΡΠ³ΠΈΠ½ Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΎΠΌΠ΅ΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ buildnumber-maven-plugin
ΠΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΎ jar Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅ ΠΈ Π²ΠΎΠ΅Π½Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π²ΠΊΠ»ΡΡΠ²Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Ρ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° version, HowΡΠΎ ΠΈ versionΡΠ° Π½Π° ΡΠ±ΠΎΡΠΊΠ°ΡΠ°. Π’ΠΎΠ²Π° Π½Π΅ ΡΠ°ΠΌΠΎ Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅, Π½ΠΎ ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΎΠΏΡΠΎΡΡΡΠ²Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ: ΡΡΠ½ΠΎ Π΅ Π² ΠΊΠΎΡ version Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Π΅ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½Π° Π³ΡΠ΅ΡΠΊΠ°ΡΠ° ΠΈ Π² ΠΊΠΎΡ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π°.
ΠΠ°ΠΉ-ΡΠ΅ΡΡΠΎ ΡΠ°Π·ΠΈ Π·Π°Π΄Π°ΡΠ° ΡΠ΅ ΡΠ΅ΡΠ°Π²Π° ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½ - ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΡΠ°ΠΉΠ» application.properties
, ΠΊΠΎΠΉΡΠΎ ΡΡΠ΄ΡΡΠΆΠ° ΡΡΠ»Π°ΡΠ° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈ Π³ΠΎ Π²ΠΊΠ»ΡΡΠ²Π° Π² ΠΌΠΎΠ½ΡΠ°ΠΆΠ°. ΠΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ ΡΠΊΡΠΈΠΏΡΠ° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅, ΡΠ°ΠΊΠ° ΡΠ΅ Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΎΡ ΡΠΎΠ·ΠΈ ΡΠ°ΠΉΠ» Π΄Π° ΠΌΠΈΠ³ΡΠΈΡΠ°Ρ ΠΊΡΠΌ MANIFEST.MF
ΠΈ Ρ.Π½.
ΠΠΎ Π½Π°ΠΉ-ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΡΠΎ Π΅, ΡΠ΅ Maven ΠΈΠΌΠ° ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΠΏΠ»ΡΠ³ΠΈΠ½, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° ΡΠ°ΠΊΡΠ² ΡΠ°ΠΉΠ» application.properties. ΠΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π°, ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΡΠ°ΠΊΡΠ² ΡΠ°ΠΉΠ» ΠΈ Π΄Π° Π³ΠΎ ΠΏΠΎΠΏΡΠ»Π½ΠΈΡΠ΅ ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈ Π·Π° Π΄Π°Π½Π½ΠΈ. ΠΡΠΈΠΌΠ΅Ρ:
# application.properties
app.name=${pom.name}
app.version=${pom.version}
app.build=${buildNumber}
Π‘ΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ ΠΈ Π½Π° ΡΡΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° ΡΠ΅ Π±ΡΠ΄Π°Ρ Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΈ Π½Π° Π΅ΡΠ°ΠΏΠ° Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ pom.name
ΠΈ pom.version
ΡΠ΅ Π±ΡΠ΄Π°Ρ Π²Π·Π΅ΡΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡ pom.xml
. Π Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ½ΠΈΠΊΠ°Π»Π΅Π½ Π½ΠΎΠΌΠ΅Ρ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π² Maven ΠΈΠΌΠ° ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΠΏΠ»ΡΠ³ΠΈΠ½ - buildnumber-maven-plugin
. ΠΠΈΠΆΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΠΎ-Π΄ΠΎΠ»Ρ:
<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>
Π Π³ΠΎΡΠ½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ ΡΠ»ΡΡΠ²Π°Ρ ΡΡΠΈ Π²Π°ΠΆΠ½ΠΈ Π½Π΅ΡΠ°. ΠΡΡΠ²ΠΎ, ΡΠ°ΠΌΠΈΡΡ ΠΏΠ»ΡΠ³ΠΈΠ½ Π΅ ΡΠΊΠ°Π·Π°Π½ Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° versionΡΠ° Π½Π° Π°ΡΠ΅ΠΌΠ±Π»ΠΈΡΠ°Π½Π΅ . ΠΡΠΎΡΠΎ, ΡΡΠΎΡΠ½Π΅Π½ΠΎ Π΅, ΡΠ΅ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π·Π°ΡΠ° Π½Π° Π²Π°Π»ΠΈΠ΄ΠΈΡΠ°Π½Π΅ (ΠΏΡΡΠ²Π°ΡΠ° ΡΠ°Π·Π°) ΠΈ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π½ΠΎΠΌΠ΅Ρ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ - ${buildNumber}
.
Π ΡΡΠ΅ΡΠΎ, ΠΏΠΎΡΠΎΡΠ²Π° ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΡΡ Π½Π° ΡΠΎΠ·ΠΈ Π½ΠΎΠΌΠ΅Ρ Π½Π° ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅, ΠΊΠΎΠΉΡΠΎ Π΅ Π·Π°Π»Π΅ΠΏΠ΅Π½ Π·Π°Π΅Π΄Π½ΠΎ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°ΡΡΠΈ . Π’ΠΎΠ²Π° Π΅ versionΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° project.version
ΠΈ ΡΠ΅ΠΊΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅, Π΄Π°Π΄Π΅Π½ΠΈ ΠΎΡ ΡΠ°Π±Π»ΠΎΠ½Π°. Π€ΠΎΡΠΌΠ°ΡΡΡ Π½Π° ΡΠ°Π±Π»ΠΎΠ½Π° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΎΡ Java ΠΊΠ»Π°ΡΠ° MessageFormat
.