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 메인 자바 리소스 테스트 자바 리소스
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 실행 로그와 프로젝트 구조에 아카이브가 있음을 보여줍니다. 다음으로 install 가 있습니다 . 훌륭한 팀. 아, 잊어버리기 전에. clean 을 실행하여 새 명령을 실행하기 전에 프로젝트를 정리하는 것이 좋습니다 . 이것은 미래에 말도 안되는 일로부터 당신을 구할 것입니다 - 나는 내 자신의 경험을 통해 그것을 보장합니다))) 따라서 먼저 clean 을 실행 한 다음 설치합니다 . 화살표가 있는 곳에 로컬 저장소가 있는 위치를 명확하게 볼 수 있습니다. 그들이 작성한 내용에 따르면 이것은 내 방식입니다 : /Users/roman_beskrovnyi/.m2 그리고 아카이브 자체는 여기에 위치합니다 : /Users/roman_beskrovnyi/.m2/repository/com/github/javarushcommunity/maven-demo/1.0- SNAPSHOT 그리고 터미널로 가서 아카이브가 있는 폴더에 들어가려고 하면 거기에 있을 것입니다. 배포는 우리에게 표시되지 않으며 아직 다른 아카이브는 필요하지 않습니다...
GO TO FULL VERSION