Maven haqida hamma narsa: men mashq qilishni yaxshi ko'raman. Ba'zan nazariya haqida yozish qanchalik zerikarli bo'lishini tasavvur ham qila olmaysiz. Biroq, siz usiz hech qaerga borolmaysiz. Amaliyot boshqa masala, albatta. Endi men ilgari tasvirlab bergan buyruqlarni tezda ko'rib chiqamiz va biz tugatamiz)
- Lekin kompilyatsiya qiladigan biror narsaga ega bo'lish uchun uni u erga qo'shish kerak! Mantiqiymi? - Ha kapitan. bgg Shuning uchun, keling, metod va ikkita testga ega bo'lgan sinfni qo'shamiz. Keling, Maven uchun oddiy papka sxemasini yarataylik:
pom.xml o'rnatilmoqda
Biz nazariya qilayotganimizda, biz juda yaxshi pom.xml ga ega bo'ldik:Kodni ko'rish
<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>
src asosiy java resurslari java resurslarini sinab ko'rish
src/main/java- da biz ishlaydigan paketni yaratamiz. Uni to'g'ri tuzish uchun boshida tashkilot nomini ( groupId ), keyin esa loyiha nomini qo'yish yaxshi bo'lar edi. Bizning holatda bu shunday bo'ladi: com.github.javarushcommunity.mavendemo Menga kelsak, bu juda yaxshi paket. Unda biz ImageComparator sinfini yaratamiz , buning uchun ikkita test yozamiz.
Mavenni va umuman loyihani IDEA ga ulash
G'oya bizning qaramligimizni tan olishi va ularni loyihada ishlatishni taklif qilishi uchun biz bir nechta ishlarni qilishimiz kerak:- Kod manbalari qayerda va testlar qayerda bo'lishi haqida fikrni ayting.
- G'oyaga maven loyihasini qo'shing.
- • src/main/java - Manbalar
- • src/main/resurslar - Resurslar
- • src/test/java - Testlar
- • src/test/resurslar - Test resurslari
- • maqsad - istisno
Biz "loyihamiz" uchun manbalar va testlarni yozamiz
Shunday qilib, biz Mavenni g'oyaga qo'shdik, endi biz uchun manba bo'ladigan sinfni tasvirlaymiz: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();
}
}
Keling, shu maqsadda testlarni yarataylik. Sinov o'tkazadigan sinf bir xil paketda bo'lishi kerak, faqat src/test/java. Fikr buni biladi va siz uning imkoniyatlaridan foydalanishingiz mumkin. Buni amalga oshirish uchun faylning o'zida sinf nomini bosing va paydo bo'lgan lampochkada test yaratish-ni tanlang: Bizdan kelajakdagi test uchun sozlamalarni tanlash so'raladi. Biz hech narsani o'rnatmaymiz, shunchaki "OK" tugmasini bosing: Sinov uchun biz sinov rasmlaridan tasvirni taqqoslaymiz va ularni test resurslariga joylashtiramiz (src/test/resource). Shundan so'ng biz ikkita test yozamiz. Bu ikki rasm boshqacha ekanligini tekshiradi. Va boshqasida biz xuddi shu rasmni uzatamiz va ular bir xil ekanligiga javob kutamiz. Keyin biz quyidagi testni olamiz:
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);
}
}
Sinovlar juda oddiy, men ular haqida to'xtalmayman. Agar siz qiziqsangiz, men bir kun kelib test haqida maqola yozaman (bu haqda sharhlarda yozing).
Maven buyruqlarini bajaring
Endi, jamoalarning ishini ko'rish uchun hamma narsa tayyor bo'lgach, Maven plaginida loyihamizni tanlang va unda Lifecycle ni oching : Endi kompilyatsiya tugmasini bosing va nima bo'lganini ko'ring: Bundan ikkita xulosa chiqarishimiz mumkin:- Bizning manbalarimiz tuzilgan va belgilangan yo'lga joylashtirilgan.
- Buyruq muvaffaqiyatli bo'ldi - BUILD SUCCESS.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
Keling, uni loyihaga qo'shamiz, versiyani iloji boricha <properties/>- ga qo'yamiz va testni qayta boshlaymiz : Endi bu boshqa masala! Ikkita sinov muvaffaqiyatli o'tdi. Yong'in! Endi biz paketimizni ishga tushiramiz va maqsadli papkada jarnikni topamiz deb kutamiz : Ya'ni, biz yana sinovlar o'tganligini ko'ramiz va shundan so'ng (loyihadagi hamma narsa yaxshi ekanligini kafolatlaymiz) biz loyihani to'plashimiz mumkin. Arxiv. Rasmda maven ishga tushirish jurnallarida va loyiha tuzilmasida arxiv mavjudligi ko'rsatilgan. Keyin biz o'rnatamiz . Ajoyib jamoa. Oh, unutishdan oldin. Toza ishga tushirish orqali yangi buyruqni bajarishdan oldin loyihani tozalash yaxshi amaliyot hisoblanadi . Bu sizni kelajakda bema'nilikdan qutqaradi - men buni o'z tajribamdan kafolatlayman))) Shuning uchun, birinchi navbatda biz ishlaymiz toza , va keyin o'rnating : O'q qaerda joylashgan bo'lsa, siz mahalliy omborning qaerda joylashganligini aniq ko'rishingiz mumkin. Ular yozgan narsalarga asoslanib, bu mening yo'limda: /Users/roman_beskrovnyi/.m2 Va arxivning o'zi bu erda joylashgan bo'ladi: /Users/roman_beskrovnyi/.m2/repository/com/github/javarushcommunity/maven-demo/1.0- SNAPSHOT Va agar biz terminalga borib, arxiv joylashgan papkaga kirishga harakat qilsak, u o'sha erda bo'ladi: deploy bizga ko'rsatmaydi va sizga hali boshqalar kerak emas...
Foydali havolalar: |
---|
GO TO FULL VERSION