JavaRush /Java блогы /Random-KK /Мавен туралы білгіңіз келгеннің бәрі. (2-бөлім) - «Java ж...
Roman Beekeeper
Деңгей

Мавен туралы білгіңіз келгеннің бәрі. (2-бөлім) - «Java жобасы А-дан Я-ға дейін»

Топта жарияланған
Мавен туралы бәрі: мен жаттығуды жақсы көретін бастама . Кейде теория туралы жазу қаншалықты жалықтыратынын елестете алмайсыз. Дегенмен, сіз онсыз ешқайда бара алмайсыз. Тәжірибе, әрине, басқа мәселе. Енді мен бұрын сипаттаған пәрмендерді жылдам өтіп көрейік, және біз аяқтаймыз)«А-дан Я-ға Java жобасы»: 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. Код көздерінің қайда болатынын және сынақтардың қайда болатынын айтыңыз.
  2. Идеяға maven жобасын қосыңыз.
Біріншіге қол жеткізу үшін сізге осы белгішені табу керек: Оны басып, Модульдер«А-дан Я-ға Java жобасы»: Maven туралы білгіңіз келгеннің бәрі.  2 - 2 бөлім бөліміне өтіңіз . Әрі қарай, жасалған қалталарға төмендегі суретте көрсетілгендей қажетті маркерді беру керек: Яғни:«А-дан Я-ға Java жобасы»: Maven туралы білгіңіз келгеннің бәрі.  2 - 3 бөлім
  • src/main/java - Көздер
  • src/main/resources - Ресурстар
  • src/test/java - Тесттер
  • src/test/resources - Сынақ ресурстары
  • мақсатты - Алынып тасталды
Барлық осы көздерді, ресурстарды, сынақты, сынақ ресурстарын және алып тасталды деп белгілеу жазылған жолдан табуға болады . Қалтаны таңдап, оған сәйкес белгі қойыңыз. Екінші қадам - ​​сиқырлы жұмыс істей алатындай етіп IDEA-ға maven жобасын қосу. Ол үшін IDEA ішінен pom.xml файлын тауып, Maven жобасы ретінде қосу опциясын таңдау үшін тінтуірдің оң жақ түймешігімен басыңыз . Міне, сіз бақытты боласыз (: Осыдан кейін «А-дан Я-ға Java жобасы»: Maven туралы білгіңіз келгеннің бәрі.  2 - 4 бөлімоң жақта Maven тақтасы пайда болады , онда сіз Maven командаларын ашып, іске қоса аласыз.«А-дан Я-ға Java жобасы»: Maven туралы білгіңіз келгеннің бәрі.  2 - 5 бөлім

Біз «жобамызға» көздер мен сынақтарды жазамыз

Сонымен, біз Мавенді идеяға қостық, енді біз үшін дереккөз ретінде әрекет ететін сыныпты сипаттайық:

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();
   }
}
Осы мақсатта тесттер құрайық. Тексеретін сынып бір пакетте болуы керек, тек src/test/java. Идея мұны біледі және сіз оның мүмкіндіктерін пайдалана аласыз. Ол үшін файлдың өзінде сынып атауын нұқыңыз және пайда болған шамда тест жасау пәрменін таңдаңыз: «А-дан Я-ға Java жобасы»: 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 бөлімНәтижесінде, біз мақсатты қалтаны жойғанымызды айтады, оның ішінде компиляция пәрменінен кейін жасалған барлық нәрсе бар . Тест пәрменін орындайық : «А-дан Я-ға Java жобасы»: Maven туралы білгіңіз келгеннің бәрі.  2 - 12 бөлімТесттер орындалады: 0... бірақ біз ЕКІ деп жаздык. Яғни, қандай да бір себептермен сынақтар өтпеді. Тікелей codeтау солай, интернетке кірейік) 5 minutesтық гуглингтен кейін мен JUnit5 көмегімен тағы бір плагин қосу керек екенін білдім:
<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-surefire-plugin</artifactId>
   <version>2.22.2</version>
</plugin>
Оны жобаға қосып, нұсқаны мүмкіндігінше <properties/> ішіне қойып, сынақты қайта бастаймыз : «А-дан Я-ға Java жобасы»: Maven туралы білгіңіз келгеннің бәрі.  2 - 13 бөлімЕнді бұл басқа мәселе! Екі сынақ сәтті өтті. Өрт! Енді біз пакетімізді іске қосамыз және мақсатты қалтадан жарникті табамыз деп күтеміз : "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 дегеніміз не, ол жерде не бар, онда негізгі командалар қандай екенін тез түсіндік. Мен мұны қарапайым және мысалдар арқылы жеткізуге тырыстым. Мысалдың барлық бастапқы codeы maven-demo жобасында GitHub жүйесіндегі JavaRush қауымдастығы ұйымында орналасқан . Барлық сұрақтарды түсініктемелерде жазыңыз. Әдеттегідей, JRTB жобамыздың жаңа codeын жіберіп алмау үшін Github-тағы тіркелгіме жазылуды ұсынамын . Тағы да ол өлген жоқ. Ол жай ғана тоқырауда болды))

Сериядағы барлық материалдардың тізімі осы мақаланың басында.

Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION