JavaRush /جاوا بلاگ /Random-UR /ہر وہ چیز جو آپ Maven کے بارے میں جاننا چاہتے تھے۔ (حصہ 2...

ہر وہ چیز جو آپ Maven کے بارے میں جاننا چاہتے تھے۔ (حصہ 2) - "A سے Z تک جاوا پروجیکٹ"

گروپ میں شائع ہوا۔
ماون کے بارے میں سب کچھ: ابتداء میں مشق کرنا پسند کرتا ہوں۔ آپ سوچ بھی نہیں سکتے کہ کبھی کبھی تھیوری کے بارے میں لکھنا کتنا تکلیف دہ ہوتا ہے۔ تاہم، آپ اس کے بغیر کہیں نہیں جا سکتے۔ مشق ایک اور معاملہ ہے، یقینا. اب آئیے جلدی سے ان کمانڈز کو دیکھیں جو میں نے پہلے بیان کی ہیں، اور ہم ختم کریں گے)"A سے Z تک جاوا پروجیکٹ": ہر وہ چیز جو آپ Maven کے بارے میں جاننا چاہتے تھے۔  حصہ 2 - 1

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>
- لیکن مرتب کرنے کے لیے کچھ حاصل کرنے کے لیے، اسے وہاں شامل کرنے کی ضرورت ہے! منطقی؟ ’’ہاں کپتان۔ bgg لہذا، آئیے ایک کلاس شامل کریں جس کے لیے ایک طریقہ اور دو ٹیسٹ ہوں گے۔ آئیے Maven کے لیے باقاعدہ فولڈر اسکیم بنائیں:
src مین جاوا وسائل ٹیسٹ جاوا وسائل
src/main/java میں ہم ایک پیکیج بنائیں گے جس میں ہم کام کریں گے۔ اسے صحیح طریقے سے کمپوز کرنے کے لیے، شروع میں تنظیم کا نام ( groupId ) اور پھر پروجیکٹ کا نام ڈالنا اچھا ہوگا۔ ہمارے معاملے میں یہ اس طرح ہوگا: com.github.javarushcommunity.mavendemo جہاں تک میرے لیے، یہ ایک بہت اچھا پیکج ہے۔ اس میں ہم ImageComparator کلاس بنائیں گے ، جس کے لیے ہم دو ٹیسٹ لکھیں گے۔

Maven اور پروجیکٹ کو مجموعی طور پر IDEA سے جوڑ رہا ہے۔

اس خیال کے لیے کہ ہم اپنے انحصار کو پہچان سکیں اور انھیں پروجیکٹ میں استعمال کرنے کی پیشکش کریں، ہمیں کئی چیزیں کرنے کی ضرورت ہے:
  1. خیال بتائیں کہ کوڈ کے ذرائع کہاں ہوں گے اور ٹیسٹ کہاں ہوں گے۔
  2. خیال میں ایک میون پروجیکٹ شامل کریں۔
پہلا حاصل کرنے کے لیے، آپ کو یہ آئیکن تلاش کرنے کی ضرورت ہے: اس پر کلک کریں اور Modules"A سے Z تک جاوا پروجیکٹ": ہر وہ چیز جو آپ Maven کے بارے میں جاننا چاہتے تھے۔  حصہ 2 - 2 سیکشن پر جائیں ۔ اس کے بعد، آپ کو بنائے گئے فولڈرز کو مطلوبہ مارکر دینے کی ضرورت ہے، جیسا کہ نیچے دی گئی تصویر میں دکھایا گیا ہے: یعنی:"A سے Z تک جاوا پروجیکٹ": ہر وہ چیز جو آپ Maven کے بارے میں جاننا چاہتے تھے۔  حصہ 2 - 3
  • src/main/java - ذرائع
  • src/main/resources - وسائل
  • src/test/java - ٹیسٹ
  • src/ٹیسٹ/وسائل - ٹیسٹ کے وسائل
  • ہدف - خارج کر دیا گیا۔
یہ تمام ذرائع، وسائل، ٹیسٹ، ٹیسٹ ریسورسز اور خارج کیے گئے اس لائن پر مل سکتے ہیں جہاں مارک جیسا لکھا ہوا ہے ۔ ایک فولڈر منتخب کریں اور اس کے مطابق اسے لیبل کریں۔ اور دوسرا مرحلہ میون پروجیکٹ کو IDEA میں شامل کرنا ہے تاکہ یہ اپنا جادو چلا سکے۔ ایسا کرنے کے لیے، آپ کو IDEA میں pom.xml فائل تلاش کرنی ہوگی اور Add as Maven Project کو منتخب کرنے کے لیے دائیں کلک کرنا ہوگا ۔ اور بس، آپ خوش ہوں گے (: اس کے بعد، ایک Maven"A سے Z تک جاوا پروجیکٹ": ہر وہ چیز جو آپ Maven کے بارے میں جاننا چاہتے تھے۔  حصہ 2 - 4 پلیٹ دائیں طرف نمودار ہوگی ، جسے آپ کھول کر اس میں Maven کمانڈ چلا سکتے ہیں۔"A سے Z تک جاوا پروجیکٹ": ہر وہ چیز جو آپ Maven کے بارے میں جاننا چاہتے تھے۔  حصہ 2 - 5

ہم اپنے "پروجیکٹ" کے لیے ذرائع اور ٹیسٹ لکھتے ہیں

لہذا، ہم نے 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 کو منتخب کریں: "A سے Z تک جاوا پروجیکٹ": ہر وہ چیز جو آپ Maven کے بارے میں جاننا چاہتے تھے۔  حصہ 2 - 6ہمیں مستقبل کے ٹیسٹ کے لیے سیٹنگز منتخب کرنے کے لیے کہا جائے گا۔ ہم کچھ بھی انسٹال نہیں کرتے، بس ٹھیک ہے پر کلک کریں: "A سے Z تک جاوا پروجیکٹ": ہر وہ چیز جو آپ Maven کے بارے میں جاننا چاہتے تھے۔  حصہ 2 - 7اپنے ٹیسٹ کے لیے، ہم ٹیسٹ امیجز سے تصویری موازنہ لیں گے اور انہیں ٹیسٹ کے وسائل (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 کھولیں : "A سے Z تک جاوا پروجیکٹ": ہر وہ چیز جو آپ Maven کے بارے میں جاننا چاہتے تھے۔  حصہ 2 - 8اب compile پر کلک کریں اور دیکھیں کہ کیا ہوا: "A سے Z تک جاوا پروجیکٹ": ہر وہ چیز جو آپ Maven کے بارے میں جاننا چاہتے تھے۔  حصہ 2 - 9اس سے ہم دو نتائج اخذ کر سکتے ہیں:
  1. ہمارے ذرائع مرتب کیے گئے اور مخصوص راستے میں رکھے گئے۔
  2. کمانڈ کامیاب رہی - BUILD SCCESS.
اور واقعی، اگر ہم پروجیکٹ کے ڈھانچے میں جائیں اور دیکھیں کہ وہاں کیا تبدیلی آئی ہے، تو ہم دیکھیں گے کہ ٹارگٹ فولڈر شامل کر دیا گیا ہے ، جسے ہم اب بھی تلاش کر سکتے ہیں اور اپنی مرتب کردہ ImageComparator کلاس کو تلاش کر سکتے ہیں : "A سے Z تک جاوا پروجیکٹ": ہر وہ چیز جو آپ Maven کے بارے میں جاننا چاہتے تھے۔  حصہ 2 - 10اب میں ایک نیا پیکج شروع کرنا چاہوں گا۔ شروع سے حکم. ایسا کرنے کے لیے، کلین کمانڈ کو چلائیں (دو بار کلک کریں) : "A سے Z تک جاوا پروجیکٹ": ہر وہ چیز جو آپ Maven کے بارے میں جاننا چاہتے تھے۔  حصہ 2 - 11نتیجے کے طور پر، ہمیں بتایا گیا ہے کہ ہم نے ٹارگٹ فولڈر کو ڈیلیٹ کر دیا ہے ، جس میں ہر وہ چیز موجود تھی جو compile کمانڈ کے بعد بنائی گئی تھی ۔ آئیے کمانڈ ٹیسٹ چلاتے ہیں : "A سے Z تک جاوا پروجیکٹ": ہر وہ چیز جو آپ Maven کے بارے میں جاننا چاہتے تھے۔  حصہ 2 - 12ٹیسٹ رن: 0... لیکن ہم نے زیادہ سے زیادہ دو لکھے۔ یعنی کسی وجہ سے ٹیسٹ نہیں چل پائے۔ لائیو کوڈنگ ایسی ہی ہے، آئیے ویب پر چلتے ہیں) 5 منٹ کی گوگلنگ کے بعد، میں نے محسوس کیا کہ JUnit5 کے ساتھ آپ کو ایک اور پلگ ان شامل کرنے کی ضرورت ہے:
<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-surefire-plugin</artifactId>
   <version>2.22.2</version>
</plugin>
آئیے اسے پروجیکٹ میں شامل کریں، ورژن کو <properties/> میں جتنا بہتر ہو سکے ڈالیں اور ٹیسٹ دوبارہ شروع کریں : "A سے Z تک جاوا پروجیکٹ": ہر وہ چیز جو آپ Maven کے بارے میں جاننا چاہتے تھے۔  حصہ 2 - 13اب یہ الگ بات ہے! دو ٹیسٹ ہوئے اور کامیاب رہے۔ آگ! اب ہم اپنا پیکج چلاتے ہیں اور توقع کرتے ہیں کہ ہمیں ٹارگٹ فولڈر میں jarnik مل جائے گا : "A سے Z تک جاوا پروجیکٹ": ہر وہ چیز جو آپ Maven کے بارے میں جاننا چاہتے تھے۔  حصہ 2 - 14یعنی، ہم دوبارہ دیکھتے ہیں کہ ٹیسٹ پاس ہو چکے ہیں، اور اس کے بعد (اس بات کی ضمانت دیتے ہیں کہ پروجیکٹ میں سب کچھ اچھا ہے) ہم پروجیکٹ کو ایک میں جمع کر سکتے ہیں۔ محفوظ شدہ دستاویزات اعداد و شمار سے پتہ چلتا ہے کہ میون لانچ لاگ اور پروجیکٹ کے ڈھانچے میں ایک آرکائیو موجود ہے۔ اگلا ہم نے انسٹال کیا ہے ۔ زبردست ٹیم۔ اوہ، اس سے پہلے کہ میں بھول جاؤ۔ کلین چلا کر نئی کمانڈ پر عمل کرنے سے پہلے پروجیکٹ کو صاف کرنا اچھا عمل سمجھا جاتا ہے ۔ یہ آپ کو مستقبل میں بکواس سے بچائے گا - میں اپنے تجربے سے اس کی ضمانت دیتا ہوں))) لہذا، پہلے ہم صاف چلائیں ، اور پھر انسٹال کریں : "A سے Z تک جاوا پروجیکٹ": ہر وہ چیز جو آپ Maven کے بارے میں جاننا چاہتے تھے۔  حصہ 2 - 15تیر کہاں ہے، آپ واضح طور پر دیکھ سکتے ہیں کہ مقامی ذخیرہ کہاں واقع ہے۔ وہ جو لکھتے ہیں اس کی بنیاد پر، یہ میرے راستے پر ہے: /Users/roman_beskrovnyi/.m2 اور محفوظ شدہ دستاویزات خود یہاں موجود ہوں گے: /Users/roman_beskrovnyi/.m2/repository/com/github/javarushcommunity/maven-demo/1.0- سنیپ شاٹ اور اگر ہم ٹرمینل پر جائیں اور اس فولڈر میں جانے کی کوشش کریں جہاں آرکائیو واقع ہے، تو یہ وہاں ہو جائے گا: "A سے Z تک جاوا پروجیکٹ": ہر وہ چیز جو آپ Maven کے بارے میں جاننا چاہتے تھے۔  حصہ 2 - 16تعیناتی ہمیں نہیں دکھائے گی، اور آپ کو ابھی دوسروں کی ضرورت نہیں ہے...

آؤٹ پٹ کے بجائے

آج ہم نے تیزی سے دیکھا کہ ماون کیا ہے، اس میں کیا ہے، وہاں کے اہم احکام کیا ہیں۔ میں نے اسے سادہ اور مثالوں سے بتانے کی کوشش کی۔ مثال کے لیے تمام سورس کوڈ Maven -demo پروجیکٹ میں GitHub پر JavaRush کمیونٹی تنظیم میں موجود ہے ۔ تمام سوالات کمنٹس میں لکھیں۔ ہمیشہ کی طرح، میرا مشورہ ہے کہ آپ Github پر میرے اکاؤنٹ کو سبسکرائب کریں تاکہ ہمارے JRTB پروجیکٹ کے نئے کوڈ سے محروم نہ ہوں۔ ایک بار پھر، وہ مرا نہیں ہے۔ وہ محض جمود میں تھا))

سیریز کے تمام مواد کی فہرست اس مضمون کے شروع میں ہے۔

تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION