JavaRush /Блоги Java /Random-TG /Ҳама чизест, ки шумо дар бораи Maven донистан мехоҳед. (Қ...
Roman Beekeeper
Сатҳи

Ҳама чизест, ки шумо дар бораи Maven донистан мехоҳед. (Қисми 2) - "Лоиҳаи Java аз А то Я"

Дар гурӯҳ нашр шудааст
Ҳама дар бораи Maven: ибтидо ман машқ карданро дӯст медорам. Шумо ҳатто тасаввур карда наметавонед, ки баъзан дар бораи назария навиштан чӣ қадар дилгиркунанда аст. Бо вуҷуди ин, шумо наметавонед бе вай ба ҳеҷ куҷо равед. Амалия масъалаи дигар аст, албатта. Акнун биёед зуд фармонҳоеро, ки ман қаблан тавсиф карда будам, гузарем ва мо анҷом медиҳем)"Лоиҳаи Java аз A то Я": Ҳама чизеро, ки шумо дар бораи Maven донистан мехоҳед.  Қисми 2 - 1

Насб кардани pom.xml

Ҳангоме ки мо назария мекардем, мо як pom.xml хеле хуб гирифтем:
Рамзи дидан
<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>
- Аммо барои он ки чизе барои ҷамъоварӣ дошта бошад, онро дар он ҷо илова кардан лозим аст! Мантиқӣ? - Ҳа капитан. bgg Аз ин рӯ, биёед синферо илова кунем, ки барои он усул ва ду санҷиш дошта бошад. Биёед нақшаи папкаи муқаррариро барои Maven эҷод кунем:
src захираҳои асосии Java санҷиши захираҳои java
Дар src/main/java мо бастаеро эҷод мекунем, ки дар он кор хоҳем кард. Барои дуруст тартиб додани он, хуб мебуд, ки дар аввал номи ташкилот ( groupId ) ва баъд номи лоиҳаро гузоред. Дар ҳолати мо ин чунин хоҳад буд: com.github.javarushcommunity.mavendemo Барои ман, ин бастаи хеле хуб аст. Дар он мо синфи ImageComparator -ро эҷод мекунем , ки барои он мо ду санҷиш менависем.

Пайваст кардани Maven ва лоиҳа дар маҷмӯъ ба IDEA

Барои он ки идея вобастагии моро эътироф кунад ва истифодаи онҳоро дар лоиҳа пешниҳод кунад, мо бояд якчанд корҳоро анҷом диҳем:
  1. Идеяро бигӯед, ки манбаъҳои codeҳо дар куҷо хоҳанд буд ва санҷишҳо дар куҷо хоҳанд буд.
  2. Ба идея лоиҳаи maven илова кунед.
Барои ноил шудан ба аввалин, шумо бояд ин нишонаро пайдо кунед: "Лоиҳаи Java аз A то Я": Ҳама чизеро, ки шумо дар бораи Maven донистан мехоҳед.  Қисми 2 - 2Онро клик кунед ва ба бахши Модулҳо гузаред . Баъдан, шумо бояд ба ҷузвдонҳои сохташуда маркери заруриро диҳед, ки дар расми зер нишон дода шудааст: "Лоиҳаи Java аз A то Я": Ҳама чизеро, ки шумо дар бораи Maven донистан мехоҳед.  Қисми 2 - 3Яъне:
  • src/main/java - Сарчашмаҳо
  • src/main/resources - Захираҳо
  • src/test/java - Санҷишҳо
  • src/test/resources - Захираҳои санҷишӣ
  • ҳадаф - Хориҷ карда шудааст
Ҳамаи ин Сарчашмаҳо, Сарчашмаҳо, Санҷишҳо, Захираҳои санҷишӣ ва Хориҷшударо дар сатре пайдо кардан мумкин аст, ки дар он Mark as навишта шудааст . Папкаеро интихоб кунед ва мувофиқи он нишонгузорӣ кунед. Ва қадами дуюм ин илова кардани лоиҳаи maven ба IDEA аст, то он ҷодугарии худро кор кунад. Барои ин ба шумо лозим аст, ки файли pom.xml -ро дар IDEA пайдо кунед ва тугмаи ростро клик кунед, то Илова ҳамчун лоиҳаи Maven -ро интихоб кунед . Ва ин аст, ки шумо хушбахт хоҳед буд (: Пас аз ин, дар тарафи рост лавҳаи Maven"Лоиҳаи Java аз A то Я": Ҳама чизеро, ки шумо дар бораи Maven донистан мехоҳед.  Қисми 2 - 4 пайдо мешавад , ки шумо метавонед дар он фармонҳои Maven кушода ва иҷро кунед."Лоиҳаи Java аз A то Я": Ҳама чизеро, ки шумо дар бораи Maven донистан мехоҳед.  Кисми 2 — 5

Мо барои "лоиҳа"-и худ манбаъҳо ва санҷишҳо менависем

Ҳамин тавр, мо Мавенро ба идея илова кардем, ҳоло биёед синферо тавсиф кунем, ки барои мо ҳамчун манбаъ амал мекунад:

Муқоисакунандаи тасвир:

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();
   }
}
Биёед бо ин мақсад тестҳо эҷод кунем. Синф, ки озмоиш мекунад, бояд дар як баста бошад, танҳо дар src/test/java. Идея инро медонад ва шумо метавонед аз имкониятҳои он истифода баред. Барои ин, дар худи файл номи синфро клик кунед ва Сохтани санҷишро дар лампаи рӯшноӣ, ки пайдо мешавад, интихоб кунед: "Лоиҳаи Java аз A то Я": Ҳама чизеро, ки шумо дар бораи Maven донистан мехоҳед.  Қисми 2 - 6Аз мо хоҳиш карда мешавад, ки танзимоти санҷиши ояндаро интихоб кунем. Мо ҳеҷ чизро насб намекунем, танҳо OK -ро пахш кунед: "Java-проект от А до Я": Все, что вы хотели знать о Maven. Часть 2 - 7Барои санҷиши мо, мо аз тасвирҳои санҷишӣ муқоисаи тасвирҳо мегирем ва онҳоро дар захираҳои санҷишӣ мегузорем (src/test/resource). Пас аз ин мо ду санҷиш менависем. Кас месанҷад, ки ин ду расм гуногунанд. Ва дар дигараш мо ҳамон расмро интиқол медиҳем ва посухе интизорем, ки онҳо якхелаанд. Сипас мо санҷиши зеринро мегирем:
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);
   }
}
Санҷишҳо хеле соддаанд, ман дар бораи онҳо таваққуф намекунам. Агар шумо таваҷҷӯҳ дошта бошед, ман рӯзе дар бораи санҷиш мақола менависам (дар бораи он дар шарҳҳо нависед).

Фармонҳои Mavenро иҷро кунед

Акнун, вақте ки ҳама чиз барои дидани кори дастаҳо омода аст, лоиҳаи моро дар плагини Maven интихоб кунед ва дар он Lifecycle кушоед : "Java-проект от А до Я": Все, что вы хотели знать о Maven. Часть 2 - 8Акнун компиляцияро пахш кунед ва бубинед, ки чӣ ҳодиса рӯй дод: "Java-проект от А до Я": Все, что вы хотели знать о Maven. Часть 2 - 9Аз ин мо метавонем ду хулоса барем:
  1. Сарчашмаҳои мо тартиб дода, дар роҳи муайян ҷойгир карда шуданд.
  2. Фармон бомуваффакият анчом ёфт- МУВАФФАКИЯТРО СОХТМОН КУНЕД.
Ва дар ҳақиқат, агар мо ба сохтори лоиҳа биравем ва бубинем, ки дар он ҷо чӣ тағир ёфтааст, мо мебинем, ки ҷузвдони мақсаднок илова карда шудааст, ки мо то ҳол метавонем синфи тартибдодаи ImageComparator-ро омӯхта ва пайдо кунем : "Java-проект от А до Я": Все, что вы хотели знать о Maven. Часть 2 - 10Ҳоло ман мехоҳам бастаи навро оғоз кунам фармон аз сифр. Барои ин, биёед фармони тозаро иҷро кунем (ду маротиба клик кунед) : "Java-проект от А до Я": Все, что вы хотели знать о Maven. Часть 2 - 11Дар натиҷа, ба мо гуфтанд, ки мо папкаи ҳадафро нест кардем, ки ҳама чизеро, ки пас аз фармони compile сохта шудааст, дар бар мегирад . Биёед санҷиши фармонро иҷро кунем : "Java-проект от А до Я": Все, что вы хотели знать о Maven. Часть 2 - 12Санҷишҳо иҷро мешаванд: 0... аммо мо то ДУ нафарро навиштем. Яъне, бо кадом сабабҳо санҷишҳо иҷро нашуданд. Рамзгузории зинда чунин аст, биёед ба веб равем) Пас аз 5 дақиқаи Google, ман фаҳмидам, ки бо JUnit5 шумо бояд як плагини дигар илова кунед:
<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-surefire-plugin</artifactId>
   <version>2.22.2</version>
</plugin>
Биёед онро ба лоиҳа илова кунем, versionро ба қадри имкон дар <properties/> гузорем ва санҷишро аз нав оғоз кунем : "Java-проект от А до Я": Все, что вы хотели знать о Maven. Часть 2 - 13Ҳоло ин кори дигар аст! Ду озмоиш гузаронида шуд ва бомуваффақият гузашт. Оташ! Ҳоло мо бастаи худро иҷро мекунем ва интизорем, ки jarnik-ро дар ҷузвдони мақсаднок пайдо хоҳем кард : "Java-проект от А до Я": Все, что вы хотели знать о Maven. Часть 2 - 14Яъне, мо бори дигар мебинем, ки санҷишҳо гузаштаанд ва пас аз ин (кафолат медиҳад, ки ҳама чиз дар лоиҳа хуб аст) мо метавонем лоиҳаро дар як архив. Рақам нишон медиҳад, ки дар гузоришҳои оғози maven ва сохтори лоиҳа бойгонӣ мавҷуд аст. Минбаъд мо насб мекунем . Дастаи бузург. Оҳ, пеш аз он ки фаромӯш кунам. Пеш аз иҷрои фармони нав бо иҷроиши тоза тоза кардани лоиҳа таҷрибаи хуб ҳисобида мешавад . Ин шуморо дар оянда аз сафсатаҳо наҷот медиҳад - ман инро аз таҷрибаи худам кафолат медиҳам))) Бинобар ин, аввал мо тоза кор мекунем ва баъд насб мекунем : "Java-проект от А до Я": Все, что вы хотели знать о Maven. Часть 2 - 15Дар куҷо тирча ҷойгир аст, шумо метавонед ба таври равшан бубинед, ки анбори маҳаллӣ дар куҷо ҷойгир аст. Бар асоси он чизе ки онҳо менависанд, ин дар роҳи ман аст: /Users/roman_beskrovnyi/.m2 Ва худи бойгонӣ дар ин ҷо ҷойгир хоҳад шуд: /Users/roman_beskrovnyi/.m2/repository/com/github/javarushcommunity/maven-demo/1.0- SNAPSHOT Ва агар мо ба терминал равем ва кӯшиш кунем, ки ба ҷузвдоне, ки архив ҷойгир аст, ворид шавем, он ҷо хоҳад буд: "Java-проект от А до Я": Все, что вы хотели знать о Maven. Часть 2 - 16ҷойгиркунӣ ба мо нишон намедиҳад ва ба шумо ҳоло ба дигарон лозим нест...

Ба чои баромад

Имрӯз мо зуд гузаштем, ки Maven чист, он ҷо чист, фармонҳои асосӣ дар он ҷо чист. Ман кӯшиш кардам, ки инро содда ва бо мисолҳо расонам. Ҳама рамзи сарчашма барои мисол дар ташкилоти ҷамъиятии JavaRush дар GitHub дар лоиҳаи maven-demo ҷойгир аст . Ҳама саволҳоро дар шарҳҳо нависед. Мисли маъмул, ман тавсия медиҳам, ки ба ҳисоби ман дар Github обуна шавед , то рамзи нави лоиҳаи JRTB-ро аз даст надиҳед. Бори дигар, ӯ мурда нест. Вай танҳо дар ҳолати устухон буд))

Рӯйхати ҳамаи маводҳои силсила дар аввали ин мақола аст.

Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION