關於Maven的一切:我喜歡實踐的開始。你甚至無法想像有時寫理論是多麼乏味。儘管如此,哪裡都沒有她。當然,實踐是另一回事。現在讓我們快速瀏覽一下我之前描述的命令,然後我們就完成了)
- 但是為了編譯一些東西,需要將其添加到那裡!符合邏輯嗎?- 是的,隊長。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 - 測試資源
- •目標- 排除
我們為我們的“專案”編寫原始程式碼和測試
因此,我們將 Maven 添加到這個想法中,現在讓我們描述將充當我們的來源的類別:影像比較器:
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 中。這個想法知道這一點,並且您可以利用它的功能。為此,請點擊檔案本身中的類別名,然後在出現的燈泡上選擇「建立測試」:我們將被要求選擇未來測試的設定。我們不安裝任何東西,只需按一下「確定」:對於我們的測試,我們將從測試映像中進行映像比較並將它們放入測試資源(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:現在點擊編譯,看看發生了什麼:由此我們可以得出兩個結論:- 我們的原始程式碼已編譯並放置在指定的路徑中。
- 指令成功 - BUILD SUCCESS。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
讓我們將它加入專案中,盡可能將版本放入<properties/>中,然後重新啟動測試:現在是另一回事了!進行了兩次測試並取得了成功。火!現在我們運行我們的套件並期望我們會在目標資料夾中找到jarnik :也就是說,我們再次看到測試已經通過,之後(保證項目中的一切都很好)我們可以將項目收集到一個檔案。此圖顯示maven啟動日誌和專案結構中有一個存檔。接下來我們進行安裝。很棒的團隊。哦,在我忘記之前。在執行新命令之前透過執行clean來清理專案被認為是很好的做法。這將使您免於將來胡言亂語 - 我以我自己的經驗保證)))因此,首先我們運行clean,然後install:箭頭所在的位置,您可以清楚地看到本地存儲庫所在的位置。根據他們寫的內容,這是我的方式: /Users/roman_beskrovnyi/.m2 存檔本身將位於此處: /Users/roman_beskrovnyi/.m2/repository/com/github/javarushcommunity/maven-demo/1.0-快照 如果我們進入終端並嘗試進入存檔所在的資料夾,那麼它就會在那裡:部署不會向我們顯示,而且您還不需要其他的...
GO TO FULL VERSION