JavaRush /جاوا بلاگ /Random-SD /سڀ ڪجھ توھان ڄاڻڻ چاھيو ٿا Maven بابت. (حصو 2) - "جاوا پر...

سڀ ڪجھ توھان ڄاڻڻ چاھيو ٿا Maven بابت. (حصو 2) - "جاوا پروجيڪٽ A کان Z تائين"

گروپ ۾ شايع ٿيل
سڀ Maven بابت: شروعات مون کي مشق ڪرڻ پسند آهي. توهان تصور به نٿا ڪري سگهو ته ڪڏهن ڪڏهن نظريي بابت لکڻ ڪيترو مشڪل ٿي سگهي ٿو. بهرحال، توهان هن کان سواء ڪٿي به نه ٿا سگهو. مشق هڪ ٻيو معاملو آهي، يقينا. هاڻي اچو ته جلدي انهن حڪمن جي ذريعي وڃو جيڪي مون اڳ ۾ بيان ڪيا آهن، ۽ اسان ختم ڪنداسين)"جاوا پروجيڪٽ 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. خيال ۾ هڪ maven پروجيڪٽ شامل ڪريو.
پهرين حاصل ڪرڻ لاء، توهان کي هن آئڪن کي ڳولڻ جي ضرورت آهي: ان تي ڪلڪ ڪريو ۽ ماڊل"جاوا پروجيڪٽ A کان Z تائين": سڀ ڪجهه جيڪو توهان Maven بابت ڄاڻڻ چاهيو ٿا.  حصو 2 - 2 سيڪشن ڏانهن وڃو . اڳيون، توھان کي ٺاھيل فولڊر کي گھربل مارڪر ڏيڻو پوندو، جيئن ھيٺ ڏنل شڪل ۾ ڏيکاريل آھي: اھو آھي:"جاوا پروجيڪٽ A کان Z تائين": سڀ ڪجهه جيڪو توهان Maven بابت ڄاڻڻ چاهيو ٿا.  حصو 2 - 3
  • src/main/java - ذريعا
  • src/main/resources - وسيلا
  • src/test/java - ٽيسٽ
  • src/test/resources - ٽيسٽ وسيلا
  • ٽارگيٽ- خارج ٿيل
اهي سڀئي ذريعا، وسيلا، ٽيسٽ، ٽيسٽ وسيلا ۽ خارج ٿيل لڪير تي ڳولي سگهجن ٿا جتي نشان جي طور تي لکيو ويو آهي . فولڊر چونڊيو ۽ ان جي مطابق ليبل ڪريو. ۽ ٻيو قدم آهي maven پروجيڪٽ کي IDEA ۾ شامل ڪرڻ ته جيئن اهو پنهنجو جادو ڪم ڪري سگهي. هن کي ڪرڻ لاء، توهان کي IDEA ۾ pom.xml فائل ڳولڻ جي ضرورت آهي ۽ منتخب ڪرڻ لاء صحيح ڪلڪ ڪريو شامل ڪريو Maven پروجيڪٽ . ۽ اهو ئي آهي، توهان خوش ٿي ويندا (: ان کان پوء، هڪ 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اسان کي چيو ويندو ته مستقبل جي ٽيسٽ لاءِ سيٽنگون چونڊيو. اسان ڪجھ به انسٽال نٿا ڪريون، بس ڪلڪ ڪريو OK: "جاوا پروجيڪٽ 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 حڪمن تي عمل ڪريو

ھاڻي، جڏھن ٽيمن جي ڪم کي ڏسڻ لاءِ سڀ ڪجھ تيار آھي، Maven پلگ ان ۾ اسان جو پروجيڪٽ چونڊيو ۽ ان ۾ لائف سائيڪل کوليو : "جاوا پروجيڪٽ A کان Z تائين": سڀ ڪجهه جيڪو توهان Maven بابت ڄاڻڻ چاهيو ٿا.  حصو 2 - 8ھاڻي ڪلڪ ڪريو compile ۽ ڏسو ڇا ٿيو: "جاوا پروجيڪٽ A کان Z تائين": سڀ ڪجهه جيڪو توهان Maven بابت ڄاڻڻ چاهيو ٿا.  حصو 2 - 9ان مان اسان ٻه نتيجا ڪڍي سگھون ٿا:
  1. اسان جا ذريعا مرتب ڪيا ويا ۽ مخصوص رستي ۾ رکيا ويا.
  2. ڪمانڊ ڪامياب ٿي ويو - BUILD SUCCESS.
۽ حقيقت ۾، جيڪڏهن اسان پروجيڪٽ جي ڍانچي ڏانهن وڃون ٿا ۽ ڏسو ته اتي ڇا تبديلي آئي آهي، اسان ڏسنداسين ته ٽارگيٽ فولڊر شامل ڪيو ويو آهي ، جيڪو اسان اڃا تائين ڳولي سگهون ٿا ۽ اسان جي مرتب ڪيل تصويري ڪامپيٽر ڪلاس کي ڳولي سگهون ٿا : "جاوا پروجيڪٽ A کان Z تائين": سڀ ڪجهه جيڪو توهان Maven بابت ڄاڻڻ چاهيو ٿا.  حصو 2 - 10هاڻي مان هڪ نئون پيڪيج شروع ڪرڻ چاهيندس. شروع کان حڪم. ائين ڪرڻ لاء، اچو ته هلون (ٻه ڀيرا ڪلڪ ڪريو) صاف ڪمانڊ : "جاوا پروجيڪٽ A کان Z تائين": سڀ ڪجهه جيڪو توهان Maven بابت ڄاڻڻ چاهيو ٿا.  حصو 2 - 11نتيجي ۾، اسان کي ٻڌايو ويو آهي ته اسان ٽارگيٽ فولڊر کي ختم ڪري ڇڏيو آهي ، جنهن ۾ هر شيء شامل آهي جيڪا compile ڪمانڊ کان پوء ٺاهي وئي هئي . اچو ته ڪمانڊ ٽيسٽ هلون : "جاوا پروجيڪٽ A کان Z تائين": سڀ ڪجهه جيڪو توهان Maven بابت ڄاڻڻ چاهيو ٿا.  حصو 2 - 12ٽيسٽ رن: 0... پر اسان TWO لکيا. اهو آهي، ڪجهه سببن لاء ٽيسٽ نه هليا. لائيو ڪوڊنگ اهڙي آهي، اچو ته ويب تي هلون) 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ھاڻي اھو مختلف معاملو آھي! ٻه ٽيسٽ هليا ويا ۽ ڪامياب ٿيا. باهه! ھاڻي اسان پنھنجي پيڪيج کي ھلائي سگھون ٿا ۽ اميد رکون ٿا ته اسان ٽارگيٽ فولڊر ۾ جارنڪ ڳولينداسون : "جاوا پروجيڪٽ 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 - 16deploy اسان کي نه ڏيکاريندو، ۽ توھان کي اڃا ٻين جي ضرورت ناھي...

پيداوار جي بدران

اڄ اسان جلدي ذريعي ويا ته Maven ڇا آهي، ان ۾ ڇا آهي، مکيه حڪم ڇا آهن. مون ان ڳالهه کي آسان ۽ مثالن سان بيان ڪرڻ جي ڪوشش ڪئي. مثال لاءِ سڀ سورس ڪوڊ واقع آهي JavaRush Community Organization in GitHub تي maven-demo پروجيڪٽ ۾ . تبصرن ۾ سڀ سوال لکو. هميشه وانگر، مان توهان کي مشورو ڏيان ٿو ته توهان منهنجي اڪائونٽ کي سبسڪرائب ڪريو Github تي جيئن ته اسان جي JRTB منصوبي لاء نئين ڪوڊ کي نه وڃايو. هڪ ڀيرو ٻيهر، هو مري نه آهي. هُو بس بيٺو هو))

سيريز ۾ سڀني مواد جي هڪ فهرست هن مضمون جي شروعات ۾ آهي.

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