ماون کے بارے میں سب کچھ: ابتداء میں مشق کرنا پسند کرتا ہوں۔ آپ سوچ بھی نہیں سکتے کہ کبھی کبھی تھیوری کے بارے میں لکھنا کتنا تکلیف دہ ہوتا ہے۔ تاہم، آپ اس کے بغیر کہیں نہیں جا سکتے۔ مشق ایک اور معاملہ ہے، یقینا. اب آئیے جلدی سے ان کمانڈز کو دیکھیں جو میں نے پہلے بیان کی ہیں، اور ہم ختم کریں گے)
- لیکن مرتب کرنے کے لیے کچھ حاصل کرنے کے لیے، اسے وہاں شامل کرنے کی ضرورت ہے! منطقی؟ ’’ہاں کپتان۔ 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 سے جوڑ رہا ہے۔
اس خیال کے لیے کہ ہم اپنے انحصار کو پہچان سکیں اور انھیں پروجیکٹ میں استعمال کرنے کی پیشکش کریں، ہمیں کئی چیزیں کرنے کی ضرورت ہے:- خیال بتائیں کہ کوڈ کے ذرائع کہاں ہوں گے اور ٹیسٹ کہاں ہوں گے۔
- خیال میں ایک میون پروجیکٹ شامل کریں۔
- • src/main/java - ذرائع
- • src/main/resources - وسائل
- • src/test/java - ٹیسٹ
- • src/ٹیسٹ/وسائل - ٹیسٹ کے وسائل
- • ہدف - خارج کر دیا گیا۔
ہم اپنے "پروجیکٹ" کے لیے ذرائع اور ٹیسٹ لکھتے ہیں
لہذا، ہم نے 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 کو منتخب کریں: ہمیں مستقبل کے ٹیسٹ کے لیے سیٹنگز منتخب کرنے کے لیے کہا جائے گا۔ ہم کچھ بھی انسٹال نہیں کرتے، بس ٹھیک ہے پر کلک کریں: اپنے ٹیسٹ کے لیے، ہم ٹیسٹ امیجز سے تصویری موازنہ لیں گے اور انہیں ٹیسٹ کے وسائل (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 پلگ ان میں ہمارا پروجیکٹ منتخب کریں اور اس میں Lifecycle کھولیں : اب compile پر کلک کریں اور دیکھیں کہ کیا ہوا: اس سے ہم دو نتائج اخذ کر سکتے ہیں:- ہمارے ذرائع مرتب کیے گئے اور مخصوص راستے میں رکھے گئے۔
- کمانڈ کامیاب رہی - BUILD SCCESS.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
آئیے اسے پروجیکٹ میں شامل کریں، ورژن کو <properties/> میں جتنا بہتر ہو سکے ڈالیں اور ٹیسٹ دوبارہ شروع کریں : اب یہ الگ بات ہے! دو ٹیسٹ ہوئے اور کامیاب رہے۔ آگ! اب ہم اپنا پیکج چلاتے ہیں اور توقع کرتے ہیں کہ ہمیں ٹارگٹ فولڈر میں jarnik مل جائے گا : یعنی، ہم دوبارہ دیکھتے ہیں کہ ٹیسٹ پاس ہو چکے ہیں، اور اس کے بعد (اس بات کی ضمانت دیتے ہیں کہ پروجیکٹ میں سب کچھ اچھا ہے) ہم پروجیکٹ کو ایک میں جمع کر سکتے ہیں۔ محفوظ شدہ دستاویزات اعداد و شمار سے پتہ چلتا ہے کہ میون لانچ لاگ اور پروجیکٹ کے ڈھانچے میں ایک آرکائیو موجود ہے۔ اگلا ہم نے انسٹال کیا ہے ۔ زبردست ٹیم۔ اوہ، اس سے پہلے کہ میں بھول جاؤ۔ کلین چلا کر نئی کمانڈ پر عمل کرنے سے پہلے پروجیکٹ کو صاف کرنا اچھا عمل سمجھا جاتا ہے ۔ یہ آپ کو مستقبل میں بکواس سے بچائے گا - میں اپنے تجربے سے اس کی ضمانت دیتا ہوں))) لہذا، پہلے ہم صاف چلائیں ، اور پھر انسٹال کریں : تیر کہاں ہے، آپ واضح طور پر دیکھ سکتے ہیں کہ مقامی ذخیرہ کہاں واقع ہے۔ وہ جو لکھتے ہیں اس کی بنیاد پر، یہ میرے راستے پر ہے: /Users/roman_beskrovnyi/.m2 اور محفوظ شدہ دستاویزات خود یہاں موجود ہوں گے: /Users/roman_beskrovnyi/.m2/repository/com/github/javarushcommunity/maven-demo/1.0- سنیپ شاٹ اور اگر ہم ٹرمینل پر جائیں اور اس فولڈر میں جانے کی کوشش کریں جہاں آرکائیو واقع ہے، تو یہ وہاں ہو جائے گا: تعیناتی ہمیں نہیں دکھائے گی، اور آپ کو ابھی دوسروں کی ضرورت نہیں ہے...
GO TO FULL VERSION