Semua tentang Maven: permulaan saya suka berlatih. Anda tidak boleh bayangkan betapa membosankannya kadang-kadang menulis tentang teori. Walau bagaimanapun, anda tidak boleh pergi ke mana-mana tanpa dia. Amalan adalah perkara lain, sudah tentu. Sekarang mari kita semak arahan yang saya nyatakan sebelum ini, dan kita akan selesaikan)
- Tetapi untuk mempunyai sesuatu untuk disusun, ia perlu ditambah di sana! Logik? - Ya kapten. bgg Oleh itu, mari tambah kelas yang akan mempunyai kaedah dan dua ujian untuknya. Mari buat skema folder biasa untuk Maven:
Menyediakan pom.xml
Semasa kami membuat teori, kami mendapat pom.xml yang cukup bagus:Lihat kod
<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 sumber java utama menguji sumber java
Dalam src/main/java kami akan membuat pakej di mana kami akan bekerja. Untuk mengarangnya dengan betul, adalah baik untuk meletakkan nama organisasi ( groupId ) pada permulaan, dan kemudian nama projek. Dalam kes kami, ia akan menjadi seperti ini: com.github.javarushcommunity.mavendemo Bagi saya, ini adalah pakej yang sangat baik. Di dalamnya kami akan mencipta kelas ImageComparator , yang mana kami akan menulis dua ujian.
Menghubungkan Maven dan projek secara keseluruhan kepada IDEA
Agar idea itu dapat mengenali kebergantungan kami dan menawarkan untuk menggunakannya dalam projek, kami perlu melakukan beberapa perkara:- Beritahu idea di mana sumber kod akan berada dan di mana ujian akan berada.
- Tambahkan projek maven pada idea itu.
- • src/main/java - Sumber
- • src/utama/sumber - Sumber
- • src/test/java - Ujian
- • src/test/resources - Sumber Ujian
- • sasaran - Dikecualikan
Kami menulis sumber dan ujian untuk "projek" kami
Jadi, kami menambahkan Maven pada idea itu, sekarang mari kita huraikan kelas yang akan bertindak sebagai sumber untuk kami: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();
}
}
Mari buat ujian untuk tujuan ini. Kelas yang diuji mestilah dalam pakej yang sama, hanya dalam src/test/java. Idea ini mengetahui perkara ini, dan anda boleh memanfaatkan keupayaannya. Untuk melakukan ini, klik pada nama kelas dalam fail itu sendiri, dan pilih Cipta ujian pada mentol lampu yang muncul: Kami akan diminta untuk memilih tetapan untuk ujian masa hadapan. Kami tidak memasang apa-apa, cuma klik OK: Untuk ujian kami, kami akan mengambil perbandingan imej daripada imej ujian dan meletakkannya dalam sumber ujian (src/test/resource). Selepas ini kami akan menulis dua ujian. Seseorang akan menyemak bahawa kedua-dua gambar ini berbeza. Dan dalam yang lain kita akan menghantar gambar yang sama dan mengharapkan jawapan bahawa mereka adalah sama. Kemudian kami mendapat ujian berikut:
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);
}
}
Ujiannya sangat mudah, saya tidak akan memikirkannya. Jika anda berminat, saya akan menulis artikel tentang ujian suatu hari nanti (tulis mengenainya dalam komen).
Laksanakan arahan Maven
Sekarang, apabila semuanya bersedia untuk melihat kerja pasukan, pilih projek kami dalam pemalam Maven dan buka Kitaran Hayat di dalamnya : Sekarang klik kompil dan lihat apa yang berlaku: Daripada ini kita boleh membuat dua kesimpulan:- Sumber kami telah disusun dan diletakkan dalam laluan yang ditentukan.
- Perintah itu berjaya - BINA KEJAYAAN.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
Mari tambahkannya pada projek, letakkan versi dalam <properties/> sebaik mungkin dan mulakan semula ujian : Sekarang ini perkara yang berbeza! Dua ujian telah dijalankan dan berjaya. Api! Sekarang kami menjalankan pakej kami dan menjangkakan bahawa kami akan menemui jarnik dalam folder sasaran : Iaitu, kami melihat sekali lagi bahawa ujian telah berlalu, dan selepas ini (menjamin bahawa segala-galanya dalam projek itu baik) kami boleh mengumpul projek itu ke dalam arkib. Angka tersebut menunjukkan bahawa terdapat arkib dalam log pelancaran maven dan struktur projek. Seterusnya kami telah memasang . Pasukan yang hebat. Oh, sebelum saya terlupa. Ia dianggap sebagai amalan yang baik untuk membersihkan projek sebelum melaksanakan arahan baharu dengan menjalankan clean . Ini akan menyelamatkan anda daripada karut pada masa akan datang - Saya menjaminnya dari pengalaman saya sendiri))) Oleh itu, mula-mula kita jalankan clean , dan kemudian pasang : Di mana anak panah itu, anda dapat melihat dengan jelas di mana repositori tempatan berada. Berdasarkan apa yang mereka tulis, ini dalam perjalanan saya: /Users/roman_beskrovnyi/.m2 Dan arkib itu sendiri akan terletak di sini: /Users/roman_beskrovnyi/.m2/repository/com/github/javarushcommunity/maven-demo/1.0- GAMBAR Dan jika kita pergi ke terminal dan cuba masuk ke folder tempat arkib itu terletak, maka ia akan berada di sana: deploy tidak akan menunjukkan kepada kami, dan anda tidak memerlukan yang lain lagi...
GO TO FULL VERSION