سڀ 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 ۾. اهو خيال ڄاڻي ٿو، ۽ توهان ان جي صلاحيتن جو فائدو وٺي سگهو ٿا. ائين ڪرڻ لاءِ، فائل ۾ ئي ڪلاس جي نالي تي ڪلڪ ڪريو، ۽ ظاھر ٿيندڙ روشني بلب تي Create test چونڊيو: اسان کي چيو ويندو ته مستقبل جي ٽيسٽ لاءِ سيٽنگون چونڊيو. اسان ڪجھ به انسٽال نٿا ڪريون، بس ڪلڪ ڪريو 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 پلگ ان ۾ اسان جو پروجيڪٽ چونڊيو ۽ ان ۾ لائف سائيڪل کوليو : ھاڻي ڪلڪ ڪريو compile ۽ ڏسو ڇا ٿيو: ان مان اسان ٻه نتيجا ڪڍي سگھون ٿا:- اسان جا ذريعا مرتب ڪيا ويا ۽ مخصوص رستي ۾ رکيا ويا.
- ڪمانڊ ڪامياب ٿي ويو - BUILD SUCCESS.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
اچو ته ان کي پروجيڪٽ ۾ شامل ڪريون، ورجن کي <properties/> ۾ رکون جيئن بھترين اسان ڪري سگھون ۽ ٽيسٽ ٻيهر شروع ڪريو : ھاڻي اھو مختلف معاملو آھي! ٻه ٽيسٽ هليا ويا ۽ ڪامياب ٿيا. باهه! ھاڻي اسان پنھنجي پيڪيج کي ھلائي سگھون ٿا ۽ اميد رکون ٿا ته اسان ٽارگيٽ فولڊر ۾ جارنڪ ڳولينداسون : اھو آھي، اسان وري ڏسون ٿا ته ٽيسٽ پاس ٿي ويا آھن، ۽ ان کان پوء (ضمانت ڏئي ٿو ته منصوبي ۾ سڀ ڪجھ ٺيڪ آھي) اسان منصوبي کي گڏ ڪري سگھون ٿا. آرڪائيو انگ اکر ڏيکاري ٿو ته ميون لانچ لاگز ۽ پروجيڪٽ جي جوڙجڪ ۾ هڪ آرڪائيو آهي. اڳيون اسان انسٽال ڪيو آهي . عظيم ٽيم. آءٌ وسارڻ کان اڳ. اهو سٺو عمل سمجهيو ويندو آهي منصوبي کي صاف ڪرڻ کان اڳ صاف ڪرڻ سان نئين حڪم تي عمل ڪرڻ کان . اهو توهان کي مستقبل ۾ بکواس کان بچائيندو - مان ان جي ضمانت ڏيان ٿو پنهنجي تجربي مان))) تنهن ڪري، پهرين اسان صاف هلون ٿا ، ۽ پوء انسٽال ڪريو : تير ڪٿي آهي، توهان واضح طور تي ڏسي سگهو ٿا ته مقامي مخزن ڪٿي آهي. انهن جي بنياد تي جيڪي لکندا آهن، اهو منهنجي رستي تي آهي: /Users/roman_beskrovnyi/.m2 ۽ آرڪائيو پاڻ هتي موجود هوندو: /Users/roman_beskrovnyi/.m2/repository/com/github/javarushcommunity/maven-demo/1.0- سنيپ شاٽ ۽ جيڪڏھن اسان ٽرمينل ڏانھن وڃون ٿا ۽ ان فولڊر ۾ وڃڻ جي ڪوشش ڪريون جتي آرڪائيو واقع آھي، پوءِ اھو اتي ھوندو: deploy اسان کي نه ڏيکاريندو، ۽ توھان کي اڃا ٻين جي ضرورت ناھي...
GO TO FULL VERSION