JavaRush /Blog Jawa /Random-JV /Kabeh sing pengin ngerti babagan Maven. (Bagian 2) - "Pro...

Kabeh sing pengin ngerti babagan Maven. (Bagian 2) - "Proyek Jawa saka A nganti Z"

Diterbitake ing grup
Kabeh babagan Maven: awal aku seneng latihan. Sampeyan malah ora bisa mbayangno carane tedious kadhangkala bisa kanggo nulis bab teori. Nanging, sampeyan ora bisa menyang ngendi wae tanpa dheweke. Laku iku prakara liyane, mesthi. Saiki ayo cepet-cepet mbukak prentah sing wis dakcritakake sadurunge, lan bakal rampung)"Proyèk Jawa saka A nganti Z": Kabeh sing pengin ngerti babagan Maven.  Bagean 2 - 1

Nyetel pom.xml

Nalika kita nggawe teori, kita entuk pom.xml sing apik banget:
Ndeleng kode
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://maven.apache.org/POM/4.0.0"
        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>com.github.javarushcommunity</groupId>
   <artifactId>maven-demo</artifactId>
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>

   <name>Maven Demo Project</name>

   <url>https://github.com/javarushcommunity/maven-demo/</url>

   <licenses>
       <license>
           <name>The Apache Software License, Version 2.0</name>
           <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
       </license>
   </licenses>

   <developers>
       <developer>
           <id>romankh3</id>
           <name>Roman Beskrovnyi</name>
           <email>roman.beskrovnyy@gmail.com</email>
       </developer>
   </developers>

   <scm>
       <connection>git@github.com:javarushcommunity/maven-demo.git</connection>
       <developerConnection>git@github.com:javarushcommunity/maven-demo.git</developerConnection>
       <url>https://github.com/javarushcommunity/maven-demo</url>
   </scm>

   <properties>
       <mockito.version>2.26.0</mockito.version>
       <junit.version>5.5.2</junit.version>
       <image.comparison.version>4.3.0</image.comparison.version>
       <maven.compiler.source>1.8</maven.compiler.source>
       <maven.compiler.target>1.8</maven.compiler.target>
       <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
       <javadoc.plugin.version>3.1.1</javadoc.plugin.version>
       <source.plugin.version>3.2.0</source.plugin.version>
   </properties>

   <dependencies>
       <dependency>
           <groupId>org.mockito</groupId>
           <artifactId>mockito-core</artifactId>
           <version>${mockito.version}</version>
           <scope>test</scope>
       </dependency>
       <dependency>
           <groupId>org.junit.jupiter</groupId>
           <artifactId>junit-jupiter-api</artifactId>
           <version>${junit.version}</version>
           <scope>test</scope>
       </dependency>
       <dependency>
           <groupId>com.github.romankh3</groupId>
           <artifactId>image-comparison</artifactId>
           <version>${image.comparison.version}</version>
       </dependency>
   </dependencies>

   <build>
       <plugins>
           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-source-plugin</artifactId>
               <version>${source.plugin.version}</version>
               <executions>
                   <execution>
                       <id>attach-sources</id>
                       <goals>
                           <goal>jar</goal>
                       </goals>
                   </execution>
               </executions>
           </plugin>
           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-javadoc-plugin</artifactId>
               <version>${javadoc.plugin.version}</version>
               <executions>
                   <execution>
                       <id>attach-javadocs</id>
                       <goals>
                           <goal>jar</goal>
                       </goals>
                   </execution>
               </executions>
           </plugin>
       </plugins>
   </build>
</project>
- Nanging supaya duwe soko kanggo ngumpulake, iku perlu ditambahake ana! Logis? - Ya kapten. bgg Mulane, ayo kang nambah kelas sing bakal duwe cara lan loro tes kanggo. Ayo nggawe skema folder biasa kanggo Maven:
src main java resources test java resources
Ing src/main/java, kita bakal nggawe paket sing bakal ditindakake. Kanggo nyipta kanthi bener, luwih becik nyelehake jeneng organisasi ( groupId ) ing wiwitan, banjur jeneng proyek kasebut. Ing kasus kita bakal kaya iki: com.github.javarushcommunity.mavendemo Kanggo kula, iki paket apik banget. Ing kono kita bakal nggawe kelas ImageComparator , sing bakal nulis rong tes.

Nyambungake Maven lan project minangka kabèh kanggo IDEA

Supaya ide kasebut bisa ngenali dependensi kita lan nawakake kanggo digunakake ing proyek kasebut, kita kudu nindakake sawetara perkara:
  1. Marang idea ngendi sumber kode bakal lan ngendi tes bakal.
  2. Tambah proyek maven kanggo idea.
Kanggo entuk sing pisanan, sampeyan kudu nemokake lambang iki: "Proyèk Jawa saka A nganti Z": Kabeh sing pengin ngerti babagan Maven.  Bagean 2 - 2Klik lan pindhah menyang bagean Modul . Sabanjure, sampeyan kudu menehi folder sing digawe minangka tandha sing dibutuhake, kaya sing ditampilake ing gambar ing ngisor iki: "Proyèk Jawa saka A nganti Z": Kabeh sing pengin ngerti babagan Maven.  Bagean 2 - 3Yaiku:
  • src/main/java - Sumber
  • src / utama / sumber daya - Resources
  • src/test/java - Tes
  • src / test / sumber daya - Test Resources
  • target - Ora kalebu
Kabeh Sumber, Sumber Daya, Tes, Sumber Daya Tes lan Ora kalebu bisa ditemokake ing baris ing ngendi Tandhani minangka ditulis . Pilih folder lan menehi label sing cocog. Lan langkah kapindho yaiku nambahake proyek maven menyang IDEA supaya bisa nindakake sihir. Kanggo nindakake iki, sampeyan kudu nemokake file pom.xml ing IDEA lan klik-tengen kanggo milih Tambah minangka Maven Project . Lan iku, sampeyan bakal seneng (: Sawise iki, piring Maven"Proyèk Jawa saka A nganti Z": Kabeh sing pengin ngerti babagan Maven.  Bagean 2 - 4 bakal katon ing sisih tengen , sing bisa mbukak lan mbukak printah Maven ing."Proyèk Jawa saka A nganti Z": Kabeh sing pengin ngerti babagan Maven.  Bagean 2 - 5

Kita nulis sumber lan tes kanggo "proyek" kita

Dadi, kita nambahake Maven menyang ide kasebut, saiki ayo nerangake kelas sing bakal dadi sumber kanggo kita:

Komparator Gambar:

package com.github.javarushcommunity.mavendemo;

import com.github.romankh3.image.comparison.ImageComparison;
import com.github.romankh3.image.comparison.model.ImageComparisonResult;
import com.github.romankh3.image.comparison.model.ImageComparisonState;

import java.awt.image.BufferedImage;

/**
* Class created for answering, does two images the same or not.
*/
public class ImageComparator {

   /**
    * Method, which says the same images or not.
    *
    * @param image1 image1 for comparison
    * @param image2 image2 for comparison
    * @return return true, if images are the same, false - otherwise.
    */
   public boolean isTheSameImages(BufferedImage image1, BufferedImage image2) {
       //Create ImageComparison object
       ImageComparison imageComparison = new ImageComparison(image1, image2);

       //Compare images
       ImageComparisonResult imageComparisonResult = imageComparison.compareImages();

       //Check, that ImageComparisonState is MATCH:
       return ImageComparisonState.MATCH == imageComparisonResult.getImageComparisonState();
   }
}
Ayo nggawe tes kanggo tujuan iki. Kelas sing dites kudu ing paket sing padha, mung ing src/test/java. Ing idea ngerti iki, lan sampeyan bisa njupuk kauntungan saka kabisan. Kanggo nindakake iki, klik ing jeneng kelas ing file dhewe lan pilih Gawe test ing bolam lampu sing katon: "Proyèk Jawa saka A nganti Z": Kabeh sing pengin ngerti babagan Maven.  Bagean 2 - 6Kita bakal dijaluk kanggo milih setelan kanggo test mangsa. Kita ora nginstal apa-apa, mung klik OK: "Proyèk Jawa saka A nganti Z": Kabeh sing pengin ngerti babagan Maven.  Bagean 2 - 7Kanggo test kita, kita bakal njupuk gambar-perbandingan saka gambar test lan sijine ing sumber daya test (src / test / sumber). Sawise iki kita bakal nulis loro tes. Siji bakal mriksa yen loro gambar iki beda. Lan ing liyane, kita bakal ngirim gambar sing padha lan ngarepake jawaban sing padha. Banjur kita entuk tes ing ngisor iki:
package com.github.javarushcommunity.mavendemo;

import com.github.romankh3.image.comparison.ImageComparisonUtil;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

import java.awt.image.BufferedImage;

@DisplayName("Unit-level testing for ImageComparator")
class ImageComparatorTest {

   private final ImageComparator comparator = new ImageComparator();

   @Test
   public void shouldConfirmImagesNotTheSame() {
       //given
       BufferedImage image1 = ImageComparisonUtil.readImageFromResources("image1.png");
       BufferedImage image2 = ImageComparisonUtil.readImageFromResources("image2.png");

       //when
       boolean theSameImages = comparator.isTheSameImages(image1, image2);

       //then
       Assertions.assertFalse(theSameImages);
   }

   @Test
   public void shouldConfirmImagesTheSame() {
       //given
       BufferedImage image1 = ImageComparisonUtil.readImageFromResources("image1.png");

       //when
       boolean theSameImages = comparator.isTheSameImages(image1, image1);

       //then
       Assertions.assertTrue(theSameImages);
   }
}
Tes kasebut gampang banget, aku ora bakal ngelingi. Yen sampeyan kasengsem, aku bakal nulis artikel babagan testing ing sawijining dina (tulis babagan ing komentar).

Nglakokaké printah Maven

Saiki, nalika kabeh wis siyap kanggo ndeleng karya tim, pilih proyek kita ing plugin Maven lan mbukak Lifecycle ing : "Proyèk Jawa saka A nganti Z": Kabeh sing pengin ngerti babagan Maven.  Bagean 2 - 8Saiki klik kompilasi lan ndeleng apa sing kedadeyan: "Proyèk Jawa saka A nganti Z": Kabeh sing pengin ngerti babagan Maven.  Bagean 2 - 9Saka iki kita bisa nggawe rong kesimpulan:
  1. Sumber kita disusun lan diselehake ing dalan sing ditemtokake.
  2. Perintah kasebut sukses - BANGUN SUKSES.
Lan tenan, yen kita pindhah menyang struktur proyek lan ndeleng apa sing wis diganti, kita bakal weruh yen folder target wis ditambahake , sing isih bisa ditliti lan nemokake kelas ImageComparator sing dikompilasi : "Proyèk Jawa saka A nganti Z": Kabeh sing pengin ngerti babagan Maven.  Bagean 2 - 10Saiki aku pengin miwiti paket anyar. printah saka ngeruk. Kanggo nindakake iki, ayo mbukak (klik kaping pindho) printah resik : "Proyèk Jawa saka A nganti Z": Kabeh sing pengin ngerti babagan Maven.  Bagean 2 - 11Akibaté, kita marang sing kita wis dibusak folder target , kang ngemot kabeh sing digawe sawise printah kompilasi . Ayo dadi mbukak test printah : "Proyèk Jawa saka A nganti Z": Kabeh sing pengin ngerti babagan Maven.  Bagean 2 - 12Tests run: 0... nanging kita wrote minangka akeh minangka TWO. Yaiku, sakperangan alesan tes kasebut ora ditindakake. Live coding kaya ngono, ayo menyang web) Sawise 5 menit googling, aku nemokake yen karo JUnit5 sampeyan kudu nambah siji plugin:
<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-surefire-plugin</artifactId>
   <version>2.22.2</version>
</plugin>
Ayo ditambahake menyang proyek kasebut, lebokake versi ing <properties/> paling apik lan miwiti maneh tes : "Proyèk Jawa saka A nganti Z": Kabeh sing pengin ngerti babagan Maven.  Bagean 2 - 13Saiki dadi masalah sing beda! Loro tes mlayu lan sukses. geni! Saiki kita mbukak paket kita lan ngarep-arep yen kita bakal nemokake jarnik ing folder target : "Proyèk Jawa saka A nganti Z": Kabeh sing pengin ngerti babagan Maven.  Bagean 2 - 14Yaiku, kita ndeleng maneh yen tes wis liwati, lan sawise iki (njamin kabeh sing ana ing proyek kasebut apik) kita bisa ngumpulake proyek kasebut dadi arsip. Tokoh kasebut nuduhake yen ana arsip ing log peluncuran maven lan struktur proyek. Sabanjure kita wis nginstal . tim gedhe. Oh, sadurunge aku lali. Iki dianggep minangka praktik sing apik kanggo ngresiki proyek sadurunge nglakokake prentah anyar kanthi mbukak resik . Iki bakal nylametake sampeyan saka omong kosong ing mangsa ngarep - Aku njamin saka pengalamanku dhewe))) Mulane, pisanan kita mbukak resik , banjur instal : "Proyèk Jawa saka A nganti Z": Kabeh sing pengin ngerti babagan Maven.  Bagean 2 - 15Ing ngendi panah kasebut, sampeyan bisa ndeleng kanthi jelas ing ngendi gudang lokal dumunung. Adhedhasar apa sing ditulis, iki ana ing dalanku: /Users/roman_beskrovnyi/.m2 Lan arsip dhewe bakal ana ing kene: /Users/roman_beskrovnyi/.m2/repository/com/github/javarushcommunity/maven-demo/1.0- SNAPSHOT Lan yen kita pindhah menyang terminal lan nyoba mlebu menyang folder ing ngendi arsip kasebut ana, mula bakal ana: "Proyèk Jawa saka A nganti Z": Kabeh sing pengin ngerti babagan Maven.  Bagean 2 - 16nyebarake ora bakal nuduhake kita, lan sampeyan ora butuh liyane ...

Tinimbang output

Dina iki kita cepet-cepet ngliwati apa Maven, apa sing ana, apa prentah utama ing kana. Aku nyoba kanggo ngirim iki prasaja lan karo conto. Kabeh kode sumber kanggo conto kasebut dumunung ing organisasi JavaRush Community ing GitHub ing proyek maven-demo . Tulis kabeh pitakonan ing komentar. Kaya biasane, aku saranake sampeyan langganan akunku ing Github supaya ora kantun kode anyar kanggo proyek JRTB kita. Sepisan maneh, dheweke ora mati. Dheweke mung ing stasis))

Dhaptar kabeh materi ing seri kasebut ana ing wiwitan artikel iki.

Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION