JavaRush /Java Blog /Random-TK /Maven hakda bilmek isleýän zatlaryňyzyň hemmesi. (2-nji b...

Maven hakda bilmek isleýän zatlaryňyzyň hemmesi. (2-nji bölüm) - "A-dan Z-a çenli Java taslamasy"

Toparda çap edildi
Maven hakda hemme zat: tejribe etmegi gowy görýän başlangyç . Teoriýa hakda ýazmagyň käwagt ýadawdygyny göz öňüne getirip bilmeýärsiň. Şeýle-de bolsa, siz onsuz hiç ýere gidip bilmersiňiz. Elbetde, tejribe başga mesele. Indi öň beýan eden buýruklarymyza çalt geçeliň we gutararys)"A-dan Z-a çenli Java taslamasy": Maven hakda bilmek isleýän zatlaryňyzyň hemmesi.  2-nji bölüm

Pom.xml gurmak

Nazaryýetleşdirenimizde, gaty gowy pom.xml aldyk:
Kody görmek
<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>
- compöne düzmeli bir zadyň bolmagy üçin, şol ýere goşmaly! Mantyklymy? - Hawa kapitan. bgg Şonuň üçin, usuly we iki synag boljak synpy goşalyň. Maven üçin yzygiderli bukja shemasy döredeliň:
src esasy java çeşmeleri java çeşmelerini barlaýar
Src / main / java- da işleýän bukjamyzy dörederis. Dogry ýazmak üçin guramanyň adyny ( groupId ), soň bolsa taslamanyň adyny goýsaň gowy bolardy . Biziň ýagdaýymyzda şeýle bolar: com.github.javarushcommunity.mavendemo Men hakda aýtsam, bu gaty gowy paket. Onda “ImageComparator” synpyny dörederis , munuň üçin iki synag ýazarys.

Maveni we umuman taslamany IDEA birikdirmek

Pikiriň garaşlylygymyzy tanap bilmek we taslamada ulanmagy teklip etmek üçin birnäçe zady etmeli:
  1. Kod çeşmeleriniň nirede boljakdygyny we synaglaryň nirede boljakdygyny aýdyň.
  2. Pikiriň üstünde bir taslama goşuň.
Birinjisine ýetmek üçin bu nyşany tapmaly: "A-dan Z-a çenli Java taslamasy": Maven hakda bilmek isleýän zatlaryňyzyň hemmesi.  2-nji bölümOňa basyň we Modullar bölümine geçiň . Ondan soň, aşakdaky suratda görkezilişi ýaly döredilen bukjalara zerur marker bermeli:: "A-dan Z-a çenli Java taslamasy": Maven hakda bilmek isleýän zatlaryňyzyň hemmesi.  2-nji bölümagny:
  • src / main / java - Çeşmeler
  • src / esasy / çeşmeler - Çeşmeler
  • src / test / java - Synaglar
  • src / test / çeşmeler - Synag çeşmeleri
  • nyşan - aýryldy
Bu çeşmeleriň, çeşmeleriň, synagyň, synag çeşmeleriniň we çykarylanlaryň hemmesiniň Markyň ýazylyşy ýaly setirde tapylyp bilner . Papkany saýlaň we şoňa görä bellik ediň. Ikinji ädim, jadysyny işledip biler ýaly, IDEA-a maven taslamasyny goşmak. Munuň üçin IDEA-da pom.xml faýlyny tapmaly we Maven Taslamasy hökmünde Goşmak saýlamak üçin sag düwmä basmaly . Ine, şonda begenersiňiz (: Şondan soň "A-dan Z-a çenli Java taslamasy": Maven hakda bilmek isleýän zatlaryňyzyň hemmesi.  2-nji bölümsag tarapda Maven tabagy peýda bolar , onda Maven buýruklaryny açyp we işledip bilersiňiz."A-dan Z-a çenli Java taslamasy": Maven hakda bilmek isleýän zatlaryňyzyň hemmesi.  2-5-nji bölüm

“Taslamamyz” üçin çeşmeler we synaglar ýazýarys

Şeýlelik bilen, Maveni pikire goşduk, indi geliň, biziň üçin çeşme hökmünde çykyş etjek synpy suratlandyralyň:

ImageComparator:

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();
   }
}
Bu maksat bilen synaglary döredeliň. Synag berýän synp bir paketde bolmaly, diňe src / test / java. Pikir muny bilýär we onuň mümkinçiliklerinden peýdalanyp bilersiňiz. Munuň üçin faýlyň içindäki synpyň adyna basyň we peýda bolan lampa üstünde synag döretmek saýlaň: "A-dan Z-a çenli Java taslamasy": Maven hakda bilmek isleýän zatlaryňyzyň hemmesi.  2-nji bölümGeljekki synag üçin sazlamalary saýlamagymyz soralar. Hiç zat gurmaýarys, diňe "OK" -a basyň: "A-dan Z-a çenli Java taslamasy": Maven hakda bilmek isleýän zatlaryňyzyň hemmesi.  2-7-nji bölümSynagymyz üçin synag suratlaryndan surat deňeşdirmesini alarys we synag çeşmelerine ýerleşdireris (src / test / source). Ondan soň iki synag ýazarys. Biri bu iki suratyň başgaçadygyny barlar. Beýleki birinde bolsa, şol bir suraty ibereris we olaryň birmeňzeşdigine jogap garaşarys. Soňra aşakdaky synagy alarys:
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);
   }
}
Synaglar gaty ýönekeý, men olaryň üstünde durup bilmerin. Eger gyzyklanýan bolsaňyz, bir gün synag barada makala ýazaryn (teswirlerde bu hakda ýazyň).

Maven buýruklaryny ýerine ýetiriň

Indi, hemme zat toparlaryň işini görmäge taýyn bolanda, “Maven” pluginindäki taslamamyzy saýlaň we “ Lifecycle” -ni açyň : "A-dan Z-a çenli Java taslamasy": Maven hakda bilmek isleýän zatlaryňyzyň hemmesi.  2-nji bölümIndi “ Compile” -e basyň we nämäniň bolandygyny görüň: "A-dan Z-a çenli Java taslamasy": Maven hakda bilmek isleýän zatlaryňyzyň hemmesi.  2-nji bölümMundan iki netije çykaryp bileris:
  1. Çeşmelerimiz düzüldi we görkezilen ýolda ýerleşdirildi.
  2. Buýruk üstünlikli boldy - GURUŞ ÜÇIN.
Hakykatdanam, taslama gurluşyna baryp, ol ýerde üýtgän zatlara göz aýlasak, maksatly bukjanyň goşulandygyny göreris, henizem düzülen ImageComparator synpymyzy gözläp tapyp bileris : "A-dan Z-a çenli Java taslamasy": Maven hakda bilmek isleýän zatlaryňyzyň hemmesi.  2-10-njy bölümIndi täze bukja başlamak isleýärin noldan buýruk Munuň üçin arassa buýrugy işledeliň (iki gezek basyň) : Netijede, jemlemek buýrugyndan soň döredilen zatlaryň hemmesini öz içine alýan nyşan"A-dan Z-a çenli Java taslamasy": Maven hakda bilmek isleýän zatlaryňyzyň hemmesi.  2-nji bölüm bukjasyny pozduk diýilýär . Buýruk synagyny işledeliň : Synaglar işleýär: 0 ... ýöne IKI ýaly ýazdyk. Someagny, käbir sebäplere görä synaglar işlemedi. Göni kodlamak şuňa meňzeýär, internete gireliň) 5 minutlap gürleşenden soň, JUnit5 bilen ýene bir plugin goşmalydygyna göz ýetirdim: "A-dan Z-a çenli Java taslamasy": Maven hakda bilmek isleýän zatlaryňyzyň hemmesi.  2-nji bölüm
<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-surefire-plugin</artifactId>
   <version>2.22.2</version>
</plugin>
Geliň, taslama goşalyň, wersiýasyny mümkin boldugyça <häsiýetler /> goýalyň we synagy täzeden başlalyň : "A-dan Z-a çenli Java taslamasy": Maven hakda bilmek isleýän zatlaryňyzyň hemmesi.  2-nji bölümIndi başga mesele! Iki synag geçirildi we üstünlikli boldy. Ot! Indi bukjamyzy işledýäris we maksatly bukjada jarnik taparys diýip garaşýarys : "A-dan Z-a çenli Java taslamasy": Maven hakda bilmek isleýän zatlaryňyzyň hemmesi.  2-nji bölümtheagny, synaglaryň geçendigini ýene bir gezek görýäris we şondan soň (taslamadaky ähli zadyň gowydygyny kepillendirýäris) taslamany bir ýere jemläp bileris arhiw Surat, açylyş ýazgylarynda we taslama gurluşynda arhiwiň bardygyny görkezýär. Indiki gurnadyk . Ajaýyp topar. Aý, ýatdan çykarmazdan ozal. Arassa işlemek bilen täze buýrugy ýerine ýetirmezden ozal taslamany arassalamak gowy tejribe hasaplanýar . Bu sizi geljekde bolgusyz zatlardan halas eder - muny öz tejribämden kepillendirýärin))) Şonuň üçin ilki bilen arassa işleýäris , soň bolsa gurýarys : "A-dan Z-a çenli Java taslamasy": Maven hakda bilmek isleýän zatlaryňyzyň hemmesi.  2-15-nji bölümOk nirede bolsa, ýerli ammaryň nirededigini anyk görüp bilersiňiz. Writeazan zatlaryna esaslanyp, meniň ýolum: /Users/roman_beskrovnyi/.m2 Arhiwiň özi şu ýerde ýerleşer: /Users/roman_beskrovnyi/.m2/repository/com/github/javarushcommunity/maven-demo/1.0- SNAPSHOT Eger terminala baryp, arhiwiň ýerleşýän bukjasyna girmäge synanyşsak, ol şol ýerde bolar: "A-dan Z-a çenli Java taslamasy": Maven hakda bilmek isleýän zatlaryňyzyň hemmesi.  2-16-njy bölümýerleşdirmek bize görkezmez, beýlekilere entek zerurlyk ýok ...

Çykyşyň ýerine

Bu gün Maveniň nämedigini, nämäniň bardygyny, esasy buýruklaryň nämedigini tiz geçdik. Muny ýönekeý we mysallar bilen bermäge synanyşdym. Mysal üçin ähli çeşme kody, maven-demo taslamasynda GitHub-daky JavaRush Community guramasynda ýerleşýär . Questionshli soraglary teswirlerde ýazyň. Hemişe bolşy ýaly, JRTB taslamamyz üçin täze kody sypdyrmazlyk üçin Github-daky hasabymy ýazmagyňyzy maslahat berýärin . Againene bir gezek ölmedi. Ol diňe stazidady))

Tapgyryň ähli materiallarynyň sanawy bu makalanyň başynda.

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