ΠΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π·Π΅ΡΠΊΠ°Π»Π° Π² ΠΏΡΠΎΠ΅ΠΊΡΠ° Java
ΠΠ°ΡΡΠΎΡΡΠΈΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ GitVerse, Π² Π²Π΅ΡΠΊΠ΅ maven-mirror ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ maven-ΠΏΠ°ΠΊΠ΅ΡΠ° com.fasterxml.jackson ΡΠ΅ΡΠ΅Π· Π·Π΅ΡΠΊΠ°Π»ΠΎ https://mvn-mirror.gitverse.ru.
ΠΡΠΎΠ΅ΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠ»Π°ΡΡ ObjectMapper Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΡΠΌΠ°ΡΠ° JSON Π² ΠΎΠ±ΡΠ΅ΠΊΡΡ Java ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΠΌΠΎΡΡΠΈΡΠ΅ Π½ΠΈΠΆΠ΅ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠ°ΠΉΠ»Π° JsonExample.java.
Π‘ΡΡΡΠΊΡΡΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ°
gitverse-registry-mirrors/
βββ README.md
βββ dependency-reduced-pom.xml
βββ pom.xml
βββ settings.xml # ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π΄Π»Ρ ΡΠΏΡΠ°Π²ΠΊΠΈ
βββ src
β βββ main
β βββ java
β βββ ru/gitverse/tutorials/jsonexample
β βββ JsonExample.java
βββ target/ΠΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅:
- README.md β Π½Π°ΡΡΠΎΡΡΠ΅Π΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ;
- dependency-reduced-pom.xml β ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ Π² ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΠΎΠΌ JAR-ΡΠ°ΠΉΠ»Π΅. Π‘ΠΎΠ·Π΄Π°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π² Maven-ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π° maven-shade-plugin;
- pom.xml β ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°;
- src/main/java β ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π΄Π»Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Java;
src/main/java/ru/gitverse/tutorials/jsonexample/JsonExample.javaβ ΡΠ°ΠΉΠ» ΠΊΠ»Π°ΡΡΠ°, Π³Π΄Π΅ru.gitverse.tutorials.jsonexample.JsonExampleβ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΊΠ²Π°Π»ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΈΠΌΡ ΠΊΠ»Π°ΡΡΠ°. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Java ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΈΠΌΡ ΠΊΠ»Π°ΡΡΠ° Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠ°ΠΉΠ»Π° Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ;- target/ β ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΡΠ±ΠΎΡΠΊΠ΅ ΠΈ ΠΎΡΠΈΡΡΠΊΠ΅.
dependency-reduced-pom.xml
Π€Π°ΠΉΠ» dependency-reduced-pom.xml ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π² Maven ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π° maven-shade-plugin, Π² Π½Π΅ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ Π² ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΠΎΠΌ JAR-ΡΠ°ΠΉΠ»Π΅ (fat JAR) ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ.
ΠΠ»Π°Π³ΠΈΠ½ maven-shade-plugin ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ Π²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² ΠΎΠ΄ΠΈΠ½ JAR-ΡΠ°ΠΉΠ» (fat JAR), ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Π° Π² pom.xml ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π΄Π°Π»Π΅Π΅.
pom.xml
pom.xml (Project Object Model) - ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ Maven. ΠΠ½ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ XML-ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ΅: ΠΎΡ Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΈ Π²Π΅ΡΡΠΈΠΈ Π΄ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ.
ΠΠΎΠ΄ ΡΠ°ΠΉΠ»Π° pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>your-group-id</groupId>
<artifactId>jsonexample</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.17.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>ru.gitverse.tutorials.jsonexample.JsonExample</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration> Β
<source>11</source>
<target>11</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<!-- put your configurations here -->
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.5.0</version>
<configuration>
<mainClass>ru.gitverse.tutorials.jsonexample.JsonExample</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>Π‘Π΅ΠΊΡΠΈΠΈ pom.xml:
<modelVersion>β ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²Π΅ΡΡΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ POM;<groupId>β ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π³ΡΡΠΏΠΏΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°;<artifactId>β ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠΎ ΠΈΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°;<version>β Π²Π΅ΡΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠ΅ΡΡΠΈΡ 1.0-SNAPSHOT ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΡΠ°Π΄ΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ (SNAPSHOT);<properties>β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ°ΡΡΡΡ pom.xml:<java.version>β Π²Π΅ΡΡΠΈΡ Java Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ²ΠΎΡ Π²Π΅ΡΡΠΈΡ Java ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉjava -version;
<dependencies>β ΡΠΏΠΈΡΠΎΠΊ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π·Π΄Π΅ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅ΡΡΡ maven-ΠΏΠ°ΠΊΠ΅Ρ com.fasterxml.jackson ΡΠ΅ΡΠ΅Π· Π·Π΅ΡΠΊΠ°Π»ΠΎhttps://mvn-mirror.gitverse.ru. ΠΠ»ΡΡΠ΅Π²Π°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°;<build>β ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Π‘Π΅ΠΊΡΠΈΡ <build> Π² pom.xml
maven-jar-plugin ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ JAR-ΡΠ°ΠΉΠ»Π° ΠΈΠ· ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠ½ ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅Ρ ΠΊΠ»Π°ΡΡΡ, ΡΠ΅ΡΡΡΡΡ ΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ JAR-ΡΠΎΡΠΌΠ°Ρ:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>ru.gitverse.tutorials.jsonexample.JsonExample</mainClass>
</manifest>
</archive>
</configuration>
</plugin>maven-compiler-plugin ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Java Π² Π±Π°ΠΉΡ-ΠΊΠΎΠ΄. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΡΠΎΠ²Π΅Π½Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Java, ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration> Β
<source>11</source>
<target>11</target>
</configuration>
</plugin>maven-shade-plugin ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Β«ΡΠΎΠ»ΡΡΡΡ
Β» JAR-ΡΠ°ΠΉΠ»ΠΎΠ² (fat JAR), ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. ΠΠ½ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΡ ΠΈ ΡΠ΅ΡΡΡΡΡ ΠΈΠ· Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² ΠΎΠ΄ΠΈΠ½ JAR-ΡΠ°ΠΉΠ»:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<!-- put your configurations here -->
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>exec-maven-plugin ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Maven (mvn compile exec:java). ΠΠ½ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π·Π°ΠΏΡΡΠΊΠ° ΠΈΡ
ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.5.0</version>
<configuration>
<mainClass>ru.gitverse.tutorials.jsonexample.JsonExample</mainClass>
</configuration>
</plugin>settings.xml
Π€Π°ΠΉΠ» ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π·Π΅ΡΠΊΠ°Π»Π° https://npm-mirror.gitverse.ru. Π‘Π΅ΠΊΡΠΈΠΈ Π·Π΅ΡΠΊΠ°Π»Π° ΠΈ ΠΏΡΠΎΡΠΈΠ»Ρ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ settings.xml, ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΌ Π½Π° Π² Π²Π°ΡΠ΅ΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ»Π° Π½Π΅Ρ, Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ.
Π Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° settings.xml:
- Π΄Π»Ρ Windows β
c:\Users\<YourUsername>\.m2\settings.xml; - Π΄Π»Ρ MacOS ΠΈ Linux β /home/username/.m2/settings.xml (Π΄ΠΎΠΌΠ°ΡΠ½ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ).
ΠΠΎΠ΄ ΡΠ°ΠΉΠ»Π° settings.xml:
<?xml version="1.0" encoding="UTF-8"?>
<settings>
<!-- Π‘Π΅ΠΊΡΠΈΡ mirrors -->
<mirrors>
<mirror>
<id>mvn-mirror</id>
<name>GitVerse Maven Mirror</name>
<url>https://mvn-mirror.gitverse.ru</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
<profiles>
<profile>
<id>gitverse</id>
<repositories>
<repository>
<id>mvn-mirror</id>
<url>https://mvn-mirror.gitverse.ru</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>mvn-mirror</id>
<url>https://mvn-mirror.gitverse.ru</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<!-- Π‘Π΅ΠΊΡΠΈΡ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ ΠΏΡΠΎΡΠΈΠ»Ρ -->
<activeProfiles>
<activeProfile>gitverse</activeProfile>
</activeProfiles>
</settings>JsonExample.java
ΠΠ»Π°ΡΡ JsonExample.java ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡΠΊΠΎΠΉ Π²Ρ
ΠΎΠ΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ main(), ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π ΠΊΠΎΠ΄Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΠ°ΠΊΠ΅Ρ ΠΏΠ°ΠΊΠ΅Ρ com.fasterxml.jackson, ΠΊΠ»Π°ΡΡ ObjectMapper ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°Π΅Ρ ΡΠΎΡΠΌΠ°Ρ JSON Π² ΠΎΠ±ΡΠ΅ΠΊΡΡ Java ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ.
JSON Π·Π°Π΄Π°Π΅ΡΡΡ Π² Π΄Π²ΡΡ ΠΌΠ΅ΡΡΠ°Ρ :
- ΠΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π° Π² ΡΡΡΠΎΠΊΠ΅:
String jsonString = mapper.writeValueAsString(person);- Π ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π²ΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π°:
String json = "{\"name\":\"Jane Smith\", \"age\": 25}";ΠΠΎΠ΄ ΡΠ°ΠΉΠ»Π° JsonExample.java:
package ru.gitverse.tutorials.jsonexample;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonExample {
public static void main(String[] args) throws Exception
{
ObjectMapper mapper = new ObjectMapper();
// Serialize a Java object to JSON
Person person = new Person("Jane Smith", 25);
String jsonString = mapper.writeValueAsString(person);
System.out.println(jsonString);
// Deserialize a JSON string to a Java object
String json = "{\"name\":\"Jane Smith\", \"age\": 25}";
Person deserializedPerson = mapper.readValue(json, Person.class);
System.out.println(deserializedPerson.getName() + ", " + deserializedPerson.getAge());
}
static class Person {
public String name;
public int age;
public Person() {
// Optionally, initialize default values for name and age here
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return this.age;
}
public void setAge(int age) {
this.age = age;;
}
}
}ΠΠΎΡΡΠ½Π΅Π½ΠΈΡ:
-
package ru.gitverse.tutorials.jsonexample;β ΠΈΠΌΡ ΠΏΠ°ΠΊΠ΅ΡΠ°, ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π² ΡΠ΅ΠΊΡΠΈΡΡ pom.xml Π΄Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠΎΠ»Π½ΠΎΠ΅ ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ΅ ΠΈΠΌΡ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ»Π°ΡΡΠ° (JsonExample); -
import com.fasterxml.jackson.databind.ObjectMapper;β ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ maven-ΠΏΠ°ΠΊΠ΅ΡΠ° com.fasterxml.jackson; -
public class JsonExample JsonExample:-
Π²Π½ΡΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°
main:- ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ (ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² JSON):
- ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ
ObjectMapperΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌmapper. ΠΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ JSON; - ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ
PersonΡ ΠΈΠΌΠ΅Π½Π΅ΠΌ person ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ Π²ΠΎΠ·ΡΠ°ΡΡΠ°.; - ΠΎΠ±ΡΠ΅ΠΊΡ
personΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΡΠ΅ΡΡΡ (ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ) Π²jsonStringΡ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°mapper.writeValueAsString(person); jsonStringΠ²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡSystem.out.println(jsonString);;
- ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ
- Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ (ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ JSON Π² ΠΎΠ±ΡΠ΅ΠΊΡ):
- ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠ°
jsonΡ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°PersonΠ² ΡΠΎΡΠΌΠ°ΡΠ΅ JSON; - ΠΎΠ±ΡΠ΅ΠΊΡ
mapperΠ΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠ΅Ρ ΡΡΡΠΎΠΊΡjson; - Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ
PersonΠ²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡSystem.out.println(deserializedPerson.name + ", " + deserializedPerson.age);;
- ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠ°
- ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ (ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² JSON):
-
static class Person:- ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π° ΠΏΡΠΈΠ²Π°ΡΠ½ΡΡ
ΠΏΠΎΠ»Ρ:
nameβ ΡΡΡΠΎΠΊΠΎΠ²Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°;ageβ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π²ΠΎΠ·ΡΠ°ΡΡΠ° ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°;
- ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°:
- ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²;
- ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ
name(ΡΡΡΠΎΠΊΠ°) ΠΈage(ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ);
- ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Ρ
getName()ΠΈsetName()Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠΎΠ»Ρ name, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΡgetAge()ΠΈsetAge()Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠΎΠ»Ρ age.
- ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π° ΠΏΡΠΈΠ²Π°ΡΠ½ΡΡ
ΠΏΠΎΠ»Ρ:
-
ΠΠ°ΡΠ°Π»ΠΎΠ³ target
ΠΠ°ΡΠ°Π»ΠΎΠ³ target ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΠΎΡΠΈΡΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
mvn packageβ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ΅ΡΡΡ ΠΈ ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅Ρ ΠΏΡΠΎΠ΅ΠΊΡ Π² JAR- ΠΈΠ»ΠΈ WARβΡΠ°ΠΉΠ». Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ, ΡΠ΅ΡΡΡΡΡ ΠΈ ΠΈΡΠΎΠ³ΠΎΠ²ΡΠΉ Π°ΡΡΠ΅ΡΠ°ΠΊΡ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ target.mvn cleanβ yΠ΄Π°Π»ΡΠ΅Ρ Π²ΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° target;mvn clean packageβ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΡΠΈΡΡΠΊΡ ΠΈ ΡΠ±ΠΎΡΠΊΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠ°ΠΏΡΡΠΊ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΠ΄Π°
ΠΠ°ΠΏΡΡΠΊ ΠΊΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² JSON ΠΈ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ:
{"name":"Jane Smith","age":25}
Jane Smith, 25ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ mvn compile exec:java Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
$ mvn compile exec:java
...
[INFO] --- exec-maven-plugin:3.5.0:java (default-cli) @ jsonexample ---
{"name":"Jane Smith","age":25}
Jane Smith, 25
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.076 s
[INFO] Finished at: 2024-11-25T20:40:42+03:00
[INFO] ------------------------------------------------------------------------Π‘Π±ΠΎΡΠΊΠ° ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ JAR-ΡΠ°ΠΉΠ»Π°
ΠΠΎΠΌΠ°Π½Π΄Π° Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ JAR-ΡΠ°ΠΉΠ»Π°:
mvn clean package && java -jar target/jsonexample-1.0-SNAPSHOT.jarΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
$ mvn clean package && java -jar target/jsonexample-1.0-SNAPSHOT.jar
...
{"name":"Jane Smith","age":25}
Jane Smith, 25Π‘Π²ΡΠ·Π°Π½Π½ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»Ρ
- GitVerse Maven Package Registry.
- ΠΡΠΈΠΌΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Maven.