backend_academy_2024_project_3-java-LanGraFyodor\src\main\java\backend\academy
javac *.java ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ: java Main.java --path <ΠΏΡΡΡ_ΠΊ_Π»ΠΎΠ³Π°ΠΌ> [ΠΎΠΏΡΠΈΠΈ]
ΠΠΏΡΠΈΠΈ:
o --path: (ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ) ΠΡΡΡ ΠΊ Π»ΠΎΠ³-ΡΠ°ΠΉΠ»Π°ΠΌ ΠΈΠ»ΠΈ URL. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°Π±Π»ΠΎΠ½Ρ Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ².
o --from: (ΠΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ) ΠΠ°ΡΠ°Π»ΡΠ½Π°Ρ Π΄Π°ΡΠ°/Π²ΡΠ΅ΠΌΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ ISO8601 (yyyy-MM-ddTHH:mm:ssZ).
o --to: (ΠΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ) ΠΠΎΠ½Π΅ΡΠ½Π°Ρ Π΄Π°ΡΠ°/Π²ΡΠ΅ΠΌΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ ISO8601.
o --format: (ΠΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ) Π€ΠΎΡΠΌΠ°Ρ ΠΎΡΡΠ΅ΡΠ°: pretty (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ), markdown ΠΈΠ»ΠΈ adoc.
o --filter-field: (ΠΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ) ΠΠΎΠ»Π΅ Π΄Π»Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ: agent ΠΈΠ»ΠΈ method.
o --filter-value: (ΠΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ) ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΎΡΠ½ΡΠΉ Π·Π½Π°ΠΊ *.
ΠΡΠΈΠΌΠ΅ΡΡ Π²ΡΠ·ΠΎΠ²Π° java Main.java --path "https://raw.githubusercontent.com/elastic/examples/master/Common%20Data%20Formats/nginx_logs/nginx_logs" --filter-field agent --filter-value "Mozilla*"
ΠΈΠ»ΠΈ
java Main.java --path "access.log" --from "2023-10-01T10:20:00Z" --to "2023-10-01T10:25:00Z" ΠΈ Π΄Ρ.
Π¨Π°Π±Π»ΠΎΠ½ Π΄Π»Ρ Π΄ΠΎΠΌΠ°ΡΠ½ΠΈΡ Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΠΊΠ°Π΄Π΅ΠΌΠΈΠΈ ΠΡΠΊΠ΅Π½Π΄Π° 2024.
Π¦Π΅Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ β ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡ Π²Π°Ρ Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Java Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΠΏΡΠ°ΠΊΡΠΈΠΊ, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ.
ΠΡΠΎ ΡΠΈΠΏΠΎΠ²ΠΎΠΉ Java-ΠΏΡΠΎΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Apache Maven.
ΠΡΠΎΠ΅ΠΊΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΉ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²:
- pom.xml β Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΠ±ΠΎΡΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ maven, ΠΈΠ»ΠΈ Project Object Model. Π Π½Π΅ΠΌ ΠΎΠΏΠΈΡΠ°Π½Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΡΠ°Π³ΠΈ ΠΏΠΎ Π΅Π³ΠΎ ΡΠ±ΠΎΡΠΊΠ΅
- src/ β Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π΅Π³ΠΎ ΡΠ΅ΡΡΡ:
- mvnw ΠΈ mvnw.cmd β ΡΠΊΡΠΈΠΏΡΡ maven wrapper Π΄Π»Ρ Unix ΠΈ Windows, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ maven Π±Π΅Π· Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ
- checkstyle.xml, checkstyle-suppression.xml, pmd.xml ΠΈ spotbugs-excludes.xml β Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π»ΠΈΠ½ΡΠ΅ΡΡ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ΄Π°. Π£ΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΏΡΠ°Π²ΠΈΠ»Π° Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π»ΠΈΠ½ΡΠ΅ΡΠΎΠ²
- .mvn/ β ΡΠ»ΡΠΆΠ΅Π±Π½Π°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ maven, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ±ΠΎΡΡΠΈΠΊΠ°
- lombok.config β ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» Lombok, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡΠ΅ΠΉ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΡΠΈΠ½Π½ΠΎΠ³ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°
- .editorconfig β ΡΠ°ΠΉΠ» Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π°
- .github/workflows/build.yml β ΡΠ°ΠΉΠ» Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΠ°Π³ΠΎΠ² ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² ΡΡΠ΅Π΄Π΅ Github
- .gitattributes, .gitignore β ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ git, Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅, ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΠ°Π·Π΄Π΅Π»Π°Ρ
ΠΊΡΡΡΠ° 1.8 ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° IDE
, 1.9 Π Π°Π±ΠΎΡΠ° Ρ Git
ΠΈ
1.10 ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° SSH
.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠΎΠ±ΡΠ°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΈΠ· ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° IDEA Run Anything ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
mvn clean verify
ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ ΠΈΠ· ΠΊΠΎΡΠ½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΠ»Ρ Unix (Linux, macOS, Cygwin, WSL):
./mvnw clean verify
ΠΠ»Ρ Windows:
mvnw.cmd clean verify
ΠΠ»Ρ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°ΡΡ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ Π²ΡΠ΅ΠΌΡ, ΠΏΠΎΠΊΠ° maven ΡΠΊΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΠΏΡΠΎΠ³ΠΎΠ½ΠΈΡ Π±Π°Π·ΠΎΠ²ΡΠΉ Π½Π°Π±ΠΎΡ ΡΠ΅ΡΡΠΎΠ².
ΠΡΠ»ΠΈ Π²Ρ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΡ:
Rule 0: org.apache.maven.enforcer.rules.version.RequireJavaVersion failed with message:
JDK version must be at least 22
ΠΠ½Π°ΡΠΈΡ, Π²Π΅ΡΡΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ JDK Π½ΠΈΠΆΠ΅ 22.
ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΡ:
Rule 1: org.apache.maven.enforcer.rules.version.RequireMavenVersion failed with message:
Maven version should, at least, be 3.8.8
ΠΠ½Π°ΡΠΈΡ, Ρ Π²Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²Π΅ΡΡΠΈΡ maven Π½ΠΈΠΆΠ΅ 3.8.8. Π’Π°ΠΊΠΎΠ³ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ,
Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ ΡΠ±ΠΎΡΠΊΡ ΠΈΠ· IDEA ΠΈΠ»ΠΈ ΡΠ΅ΡΠ΅Π· mvnw
-ΡΠΊΡΠΈΠΏΡΡ.
ΠΠ°Π»Π΅Π΅ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ maven.
ΠΠ°ΠΏΡΡΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ²:
mvn compile
ΠΠ°ΠΏΡΡΠΊ ΡΠ΅ΡΡΠΎΠ²:
mvn test
ΠΠ°ΠΏΡΡΠΊ Π»ΠΈΠ½ΡΠ΅ΡΠΎΠ²:
mvn checkstyle:check modernizer:modernizer spotbugs:check pmd:check pmd:cpd-check
ΠΡΠ²ΠΎΠ΄ Π΄Π΅ΡΠ΅Π²Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠ° (ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅ ΡΡΠ°Π½Π·ΠΈΡΠΈΠ²Π½ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ):
mvn dependency:tree
ΠΡΠ²ΠΎΠ΄ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Π»ΡΠ±ΠΎΠΌ ΠΏΠ»Π°Π³ΠΈΠ½Π΅ (Π²ΠΌΠ΅ΡΡΠΎ compiler
ΠΌΠΎΠΆΠ½ΠΎ
ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΠΉ Π²Π°Ρ ΠΏΠ»Π°Π³ΠΈΠ½):
mvn help:describe -Dplugin=compiler
- ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ maven: https://maven.apache.org/guides/index.html
- ΠΠΎΠΈΡΠΊ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈ ΠΈΡ Π²Π΅ΡΡΠΈΠΉ: https://central.sonatype.com/search
- ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΏΡΠΎΡΠ΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ Π² ΡΡΠ΅Π΄Π΅ github: https://docs.github.com/en/actions
- ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ git: https://git-scm.com/doc
- Javadoc Π΄Π»Ρ Java 22: https://docs.oracle.com/en/java/javase/22/docs/api/index.html