Мавен жөнүндө бардыгы: мен машыгууну жакшы көрөм. Теория жөнүндө жазуу кээде канчалык түйшүктүү болоорун элестете да албайсың. Бирок, сен алсыз эч жакка бара албайсың. Практика, албетте, башка маселе. Эми мен мурда сүрөттөгөн буйруктарды тез аралап чыгалы, анан бүтүрөбүз)
- Бирок компиляциялоо үчүн бир нерсе болушу үчүн, аны ошол жерге кошуу керек! Логикалык? - Ооба капитан. bgg Ошондуктан, анын методу жана эки тести бар классты кошолу. Maven үчүн кадимки папка схемасын түзөлү:
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>
src негизги Java ресурстары Java ресурстарын сынайт
src/main/javaда биз иштей турган пакетти түзөбүз. Аны туура түзүү үчүн башында уюмдун атын ( groupId ), андан кийин долбоордун атын жазсаңыз жакшы болмок. Биздин учурда мындай болот: com.github.javarushcommunity.mavendemo Мага келсек, бул абдан жакшы пакет. Анда биз ImageComparator классын түзөбүз , ал үчүн биз эки тест жазабыз.
Maven жана бүтүндөй долбоорду IDEAга туташтыруу
Идея биздин көз карандылыктарыбызды таанып, аларды долбоордо колдонууну сунуштай алышы үчүн, биз бир нече иштерди кылышыбыз керек:- Код булактары жана тесттер кайда болоорун айтыңыз.
- Идеяга maven долбоорун кошуңуз.
- • src/main/java - Булактар
- • src/main/resources - Ресурстар
- • src/test/java - Тесттер
- • src/test/resources - Сыноо ресурстары
- • максаттуу - Чыгарылган
Биз "долбоорубуз" үчүн булактарды жана тесттерди жазабыз
Ошентип, биз Мавенди идеяга коштук, эми биз үчүн булак боло турган классты сүрөттөп көрөлү: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да гана болушу керек. Идея муну билет жана сиз анын мүмкүнчүлүктөрүнөн пайдалана аласыз. Бул үчүн, файлдын өзүндөгү класстын атын чыкылдатыңыз жана пайда болгон лампочкада тестти түзүү тандаңыз: Бизден келечектеги сыноо үчүн орнотууларды тандоо суралат. Биз эч нерсе орнотпойбуз, жөн гана OK баскычын чыкылдатыңыз: Биздин сыноо үчүн биз тесттик сүрөттөрдөн сүрөт-салыштырууларды алып, аларды тесттик ресурстарга (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 ачыңыз : Эми компиляцияны чыкылдатыңыз жана эмне болгонун көрүңүз: Мындан биз эки жыйынтык чыгарсак болот:- Биздин булактар топтолуп, көрсөтүлгөн жолго жайгаштырылды.
- Команда ийгorктүү болду - ИЙГИЛИК КУРУ.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
Келгиле, аны долбоорго кошолу, versionны колдон келишинче <касиеттер/> коюңуз жана тестти кайра баштаңыз : Эми бул башка маселе! Эки сынак өтүп, ийгorктүү болду. Fire! Эми биз пакетибизди иштетип , максаттуу папкадагы жарникти табабыз деп күтөбүз : Башкача айтканда, биз сыноолор өткөнүн дагы бир жолу көрүп жатабыз жана андан кийин (долбоордогу бардыгы жакшы экендигине кепилдик беребиз) долбоорду чогулта алабыз. архив. Сүрөт maven ишке киргизүү журналдарында жана долбоордун структурасында архив бар экенин көрсөтүп турат. Кийинки биз орнотуп жатабыз . Улуу команда. Ой, унутуп кала электе. Жаңы буйрукту аткаруудан мурун таза иштетүү менен долбоорду тазалоо жакшы практика болуп эсептелет . Бул келечекте сизди куру сөздөн куткарат - мен буга өзүмдүн тажрыйбамдан кепилдик берем))) Ошондуктан, адегенде биз таза иштейбиз , анан орнотобуз : Жебе кайда, жергorктүү репозиторий кайда жайгашканын так көрө аласыз. Алардын жазгандарына таянсак, бул менин жолум: /Users/roman_beskrovnyi/.m2 Ал эми архивдин өзү бул жерде жайгашат: /Users/roman_beskrovnyi/.m2/repository/com/github/javarushcommunity/maven-demo/1.0- SNAPSHOT Эгерде биз терминалга барып, архив жайгашкан папкага кирүүгө аракет кылсак, анда ал ошол жерде болот: жайгаштыруу бизге көрсөтпөйт, а сизге башкалардын кереги жок...
Пайдалуу шилтемелер: |
---|
GO TO FULL VERSION