Maven haqqında hər şey: təcrübə etməyi sevdiyim başlanğıc . Nəzəriyyə haqqında yazmağın bəzən nə qədər yorucu olduğunu təsəvvür belə edə bilməzsiniz. Ancaq onsuz heç yerə gedə bilməzsən. Təcrübə, əlbəttə, başqa məsələdir. İndi əvvəllər təsvir etdiyim əmrləri tez keçirək və bitirəcəyik)
- Amma nəyisə tərtib etmək üçün onu ora əlavə etmək lazımdır! Məntiqi? - Bəli kapitan. bgg Buna görə də, metodu və onun üçün iki testi olan bir sinif əlavə edək. Maven üçün adi qovluq sxemi yaradaq:
pom.xml qurulması
Nəzəriyyə hazırlayarkən olduqca yaxşı pom.xml əldə etdik:Koda baxın
<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 əsas java resursları java resurslarını sınayın
src/main/java- da biz işləyəcəyimiz paket yaradacağıq. Onu düzgün tərtib etmək üçün əvvəlcə təşkilatın adını ( groupId ), sonra isə layihənin adını qoymaq yaxşı olardı . Bizim vəziyyətimizdə bu belə olacaq: com.github.javarushcommunity.mavendemo Mənə gəlincə, bu çox yaxşı paketdir. Orada ImageComparator sinifini yaradacağıq , bunun üçün iki test yazacağıq.
Maven və bütövlükdə layihəni IDEA ilə əlaqələndirmək
İdeyanın asılılıqlarımızı tanıya bilməsi və onlardan layihədə istifadə etməyi təklif etməsi üçün bir neçə şeyi etməliyik:- Kod mənbələrinin harada olacağını və testlərin harada olacağını söyləyin.
- İdeyaya maven layihəsi əlavə edin.
- • src/main/java - Mənbələr
- • src/main/resurs - Resurslar
- • src/test/java - Testlər
- • src/test/resurs - Test Resursları
- • hədəf - İstisna deyil
"Layihəmiz" üçün mənbələr və testlər yazırıq
Beləliklə, biz Maven-i fikrə əlavə etdik, indi bizim üçün mənbə rolunu oynayacaq sinfi təsvir edək:Şəkil Müqayisəçisi:
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();
}
}
Bunun üçün testlər yaradaq. Test edən sinif eyni paketdə, yalnız src/test/java-da olmalıdır. İdeya bunu bilir və siz onun imkanlarından istifadə edə bilərsiniz. Bunu etmək üçün, faylın özündə sinif adının üzərinə klikləyin və görünən lampada test yarat seçin: Bizdən gələcək test üçün parametrləri seçmək tələb olunacaq. Biz heç nə quraşdırmırıq, sadəcə OK düyməsini sıxırıq: Testimiz üçün biz test şəkillərindən şəkil müqayisəsini götürüb test resurslarına (src/test/resource) yerləşdirəcəyik. Bundan sonra iki test yazacağıq. Biri bu iki şəklin fərqli olduğunu yoxlayacaq. Digərində isə eyni şəkli ötürəcəyik və onların eyni olduğuna dair cavab gözləyəcəyik. Sonra aşağıdakı testi alırıq:
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);
}
}
Testlər çox sadədir, onların üzərində dayanmayacağam. Əgər maraqlanırsınızsa, nə vaxtsa test haqqında məqalə yazacam (bu barədə şərhlərdə yazın).
Maven əmrlərini yerinə yetirin
İndi, komandaların işini görmək üçün hər şey hazır olduqda, Maven plaginində layihəmizi seçin və orada Lifecycle açın : İndi kompilyasiya düyməsini basın və nə baş verdiyinə baxın: Bundan iki nəticə çıxara bilərik:- Qaynaqlarımız yığılıb müəyyən olunmuş yola yerləşdirilib.
- Əmr uğurlu oldu - UĞUR TUR.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
Gəlin onu layihəyə əlavə edək, versiyanı bacardıqca <properties/>- ə yerləşdirək və testi yenidən başladaq : İndi başqa məsələdir! İki sınaq keçirildi və uğurlu oldu. Yanğın! İndi paketimizi işə salırıq və hədəf qovluqda jarnik tapacağımızı gözləyirik : Yəni, testlərin keçdiyini bir daha görürük və bundan sonra (layihədə hər şeyin yaxşı olduğuna zəmanət veririk) layihəni bir yerə toplaya bilərik. arxiv. Şəkil göstərir ki, maven başlatma qeydlərində və layihə strukturunda bir arxiv var. Sonra quraşdırırıq . Əla komanda. Ah, unutmadan əvvəl. Təmiz işlətməklə yeni əmri yerinə yetirməzdən əvvəl layihəni təmizləmək yaxşı təcrübə hesab olunur . Bu, gələcəkdə sizi cəfəngiyyatdan xilas edəcək - mən buna öz təcrübəmdən zəmanət verirəm))) Buna görə də, ilk növbədə təmiz işlədirik , sonra quraşdırırıq : Ox haradadır, yerli deponun harada yerləşdiyini aydın görə bilərsiniz. Yazdıqlarına əsasən, bu mənim yolumdadır: /Users/roman_beskrovnyi/.m2 Və arxiv özü burada yerləşəcək: /Users/roman_beskrovnyi/.m2/repository/com/github/javarushcommunity/maven-demo/1.0- SNAPSHOT Əgər biz terminala gedib arxivin yerləşdiyi qovluğa daxil olmağa çalışsaq, o, orada olacaq: yerləşdirmə bizə göstərməyəcək və başqalarına hələ ehtiyacınız yoxdur...
Faydalı bağlantılar: |
---|
GO TO FULL VERSION