Tất cả về Maven: sự khởi đầu tôi thích luyện tập. Bạn thậm chí không thể tưởng tượng được đôi khi việc viết về lý thuyết có thể tẻ nhạt đến mức nào. Tuy nhiên, không có nơi nào không có cô ấy. Tất nhiên, thực hành là một vấn đề khác. Bây giờ, hãy nhanh chóng xem qua các lệnh mà tôi đã mô tả trước đó và chúng ta sẽ hoàn thành)
- Nhưng để có thứ gì đó biên dịch thì cần phải thêm vào đó! Hợp lý? - Vâng! Thưa đội trưởng. bgg Vì vậy, hãy thêm một lớp sẽ có một phương thức và hai bài kiểm tra cho nó. Hãy tạo sơ đồ thư mục thông thường cho Maven:
Thiết lập pom.xml
Trong khi đang xây dựng lý thuyết, chúng tôi đã nhận được một tệp pom.xml khá tốt:Xem mã
<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 tài nguyên java chính kiểm tra tài nguyên java
Trong src/main/java, chúng ta sẽ tạo một gói mà chúng ta sẽ làm việc trong đó. Để soạn chính xác, tốt nhất bạn nên đặt tên của tổ chức ( groupId ) ở đầu và sau đó là tên của dự án. Trong trường hợp của chúng tôi, nó sẽ như thế này: com.github.javarushcommunity.mavendemo Đối với tôi, đây là một gói rất tốt. Trong đó, chúng ta sẽ tạo lớp ImageComparator , trong đó chúng ta sẽ viết hai bài kiểm tra.
Kết nối Maven và toàn bộ dự án với IDEA
Để ý tưởng có thể nhận ra sự phụ thuộc của chúng tôi và đề xuất sử dụng chúng trong dự án, chúng tôi cần thực hiện một số điều:- Cho ý tưởng biết nguồn mã sẽ ở đâu và nơi kiểm thử sẽ ở đâu.
- Thêm dự án maven vào ý tưởng.
- • src/main/java - Nguồn
- • src/main/resources - Tài nguyên
- • src/test/java - Kiểm tra
- • src/test/resources - Tài nguyên kiểm tra
- • mục tiêu - Bị loại trừ
Chúng tôi viết nguồn và kiểm tra cho “dự án” của mình
Vì vậy, chúng tôi đã thêm Maven vào ý tưởng, bây giờ hãy mô tả lớp sẽ đóng vai trò là nguồn cho chúng tôi:Bộ so sánh hình ảnh:
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();
}
}
Hãy tạo các bài kiểm tra cho mục đích này. Lớp kiểm tra phải nằm trong cùng một gói, chỉ trong src/test/java. Ý tưởng biết điều này và bạn có thể tận dụng khả năng của nó. Để thực hiện việc này, hãy nhấp vào tên của lớp trong chính tệp đó và chọn Tạo bài kiểm tra trên bóng đèn xuất hiện: Chúng tôi sẽ được yêu cầu chọn cài đặt cho bài kiểm tra trong tương lai. Chúng tôi không cài đặt bất cứ thứ gì, chỉ cần nhấp vào OK: Đối với thử nghiệm của chúng tôi, chúng tôi sẽ so sánh hình ảnh từ các hình ảnh thử nghiệm và đưa chúng vào tài nguyên thử nghiệm (src/test/resource). Sau đó chúng ta sẽ viết hai bài kiểm tra. Người ta sẽ kiểm tra xem hai bức ảnh này có khác nhau không. Và ở bên kia, chúng ta sẽ truyền tải cùng một bức tranh và mong đợi câu trả lời rằng chúng giống nhau. Sau đó, chúng tôi nhận được bài kiểm tra sau:
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);
}
}
Các bài kiểm tra rất đơn giản, tôi sẽ không tập trung vào chúng. Nếu bạn quan tâm, một ngày nào đó tôi sẽ viết một bài về thử nghiệm (viết về nó trong phần bình luận).
Thực thi các lệnh Maven
Bây giờ, khi mọi thứ đã sẵn sàng để xem công việc của các nhóm, hãy chọn dự án của chúng tôi trong plugin Maven và mở Lifecycle trong đó : Bây giờ hãy nhấp vào biên dịch và xem điều gì đã xảy ra: Từ đó chúng ta có thể rút ra hai kết luận:- Nguồn của chúng tôi đã được biên soạn và đặt trong đường dẫn được chỉ định.
- Lệnh đã thành công - XÂY DỰNG THÀNH CÔNG.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
Hãy thêm nó vào dự án, đặt phiên bản vào <properties/> tốt nhất có thể và khởi động lại thử nghiệm : Bây giờ lại là một vấn đề khác! Hai cuộc thử nghiệm đã diễn ra và thành công. Ngọn lửa! Bây giờ chúng tôi chạy gói của mình và hy vọng rằng chúng tôi sẽ tìm thấy jarnik trong thư mục đích : Nghĩa là, chúng tôi lại thấy rằng các thử nghiệm đã vượt qua và sau đó (đảm bảo rằng mọi thứ trong dự án đều tốt), chúng tôi có thể thu thập dự án vào một lưu trữ. Hình vẽ cho thấy có một kho lưu trữ trong nhật ký khởi chạy maven và cấu trúc dự án. Tiếp theo chúng ta đã cài đặt . Một đội tuyệt vời. Ồ, trước khi tôi quên mất. Việc dọn dẹp dự án trước khi thực hiện lệnh mới bằng cách chạy clean được coi là cách tốt . Điều này sẽ giúp bạn tránh khỏi những điều vô nghĩa trong tương lai - Tôi đảm bảo điều đó từ kinh nghiệm của bản thân))) Vì vậy, đầu tiên chúng ta chạy clean , sau đó cài đặt : Mũi tên ở đâu, bạn có thể thấy rõ vị trí của kho lưu trữ cục bộ. Dựa trên những gì họ viết, đây là cách của tôi: /Users/roman_beskrovnyi/.m2 Và bản thân kho lưu trữ sẽ được đặt ở đây: /Users/roman_beskrovnyi/.m2/repository/com/github/javarushcommunity/maven-demo/1.0- SNAPSHOT Và nếu chúng ta đi đến thiết bị đầu cuối và cố gắng truy cập vào thư mục chứa kho lưu trữ, thì nó sẽ ở đó: triển khai sẽ không hiển thị cho chúng tôi và bạn chưa cần những thứ khác...
Liên kết hữu ích: |
---|
GO TO FULL VERSION