JavaRush /وبلاگ جاوا /Random-FA /هر آنچه می خواستید در مورد Maven بدانید. (قسمت 2) - "پروژ...
Roman Beekeeper
مرحله

هر آنچه می خواستید در مورد 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روی آن کلیک کنید و به بخش Modules بروید . در مرحله بعد باید به پوشه های ایجاد شده نشانگر مورد نیاز را مانند شکل زیر بدهید "پروژه جاوا از A تا Z": هر آنچه می خواستید در مورد Maven بدانید.  قسمت 2 - 3:
  • src/main/java - منابع
  • src/main/resources - منابع
  • src/test/java - تست ها
  • src/test/resources - منابع تست
  • هدف - مستثنی شده است
همه این منابع، منابع، تست، منابع تست و موارد استثنا شده را می توان در خطی که علامت گذاری به عنوان نوشته شده است پیدا کرد . یک پوشه را انتخاب کنید و بر اساس آن برچسب بزنید. و مرحله دوم اضافه کردن پروژه maven به IDEA است تا بتواند جادوی خود را انجام دهد. برای انجام این کار، باید فایل pom.xml را در IDEA پیدا کنید و برای انتخاب 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از ما خواسته می شود تنظیمات را برای تست آینده انتخاب کنیم. ما هیچ چیزی را نصب نمی کنیم، فقط روی 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 انتخاب کنید و Lifecycle را در آن باز کنید : "پروژه جاوا از A تا Z": هر آنچه می خواستید در مورد Maven بدانید.  قسمت 2 - 8حالا روی کامپایل کلیک کنید و ببینید چه اتفاقی افتاده است: "پروژه جاوا از A تا Z": هر آنچه می خواستید در مورد Maven بدانید.  قسمت 2 - 9از اینجا می توانیم دو نتیجه بگیریم:
  1. منابع ما جمع آوری و در مسیر مشخص شده قرار گرفتند.
  2. دستور موفقیت آمیز بود - BUILD SUCCESS.
و واقعاً، اگر به ساختار پروژه برویم و به آنچه در آنجا تغییر کرده نگاه کنیم، می بینیم که پوشه هدف اضافه شده است ، که هنوز می توانیم آن را کاوش کنیم و کلاس ImageComparator کامپایل شده خود را پیدا کنیم : "پروژه جاوا از A تا Z": هر آنچه می خواستید در مورد Maven بدانید.  قسمت 2 - 10اکنون می خواهم یک بسته جدید راه اندازی کنم. دستور از ابتدا برای انجام این کار، دستور clean را اجرا می کنیم (دوبار کلیک می کنیم) : "پروژه جاوا از A تا Z": هر آنچه می خواستید در مورد Maven بدانید.  قسمت 2 - 11در نتیجه به ما می گویند که پوشه target را حذف کرده ایم که حاوی هر چیزی است که بعد از دستور کامپایل ایجاد شده است . بیایید تست فرمان را اجرا کنیم : "پروژه جاوا از 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اکنون موضوع متفاوت است! دو تست اجرا شد و موفقیت آمیز بود. آتش! اکنون بسته خود را اجرا می کنیم و انتظار داریم که jarnik را در پوشه هدف پیدا کنیم : "Java-проект от А до Я": Все, что вы хотели знать о Maven. Часть 2 - 14یعنی دوباره می بینیم که تست ها به پایان رسیده است و بعد از این (تضمین می کند که همه چیز در پروژه خوب است) می توانیم پروژه را در یک فایل جمع آوری کنیم. بایگانی. شکل نشان می دهد که یک بایگانی در لاگ های پرتاب maven و ساختار پروژه وجود دارد. بعد ما باید نصب کنیم . تیم عالی. آه، قبل از اینکه فراموش کنم تمیز کردن پروژه قبل از اجرای دستور جدید با اجرای پاک، تمرین خوبی در نظر گرفته می شود . این شما را از مزخرفات در آینده نجات می دهد - من از تجربه خودم آن را تضمین می کنم))) بنابراین، ابتدا تمیز را اجرا می کنیم و سپس نصب می کنیم : "Java-проект от А до Я": Все, что вы хотели знать о Maven. Часть 2 - 15جایی که فلش است، می توانید به وضوح ببینید که مخزن محلی در کجا قرار دارد. بر اساس آنچه آنها می نویسند، این در راه است: /Users/roman_beskrovnyi/.m2 و خود آرشیو در اینجا قرار خواهد گرفت: /Users/roman_beskrovnyi/.m2/repository/com/github/javarushcommunity/maven-demo/1.0- SNAPSHOT و اگر ما به ترمینال برویم و سعی کنیم به پوشه ای که بایگانی در آن قرار دارد وارد شویم، در آنجا خواهد بود: "Java-проект от А до Я": Все, что вы хотели знать о Maven. Часть 2 - 16deploy به ما نشان نمی دهد و شما هنوز به بقیه نیاز ندارید...

به جای خروجی

امروز ما به سرعت بررسی کردیم که Maven چیست، چه چیزی وجود دارد، چه دستورات اصلی وجود دارد. سعی کردم این را ساده و با مثال بیان کنم. تمام کد منبع برای مثال در سازمان JavaRush Community در GitHub در پروژه maven-demo قرار دارد . تمام سوالات را در نظرات بنویسید. طبق معمول، پیشنهاد می‌کنم در حساب کاربری من در Github مشترک شوید تا کد جدید پروژه JRTB ما را از دست ندهید. بار دیگر او نمرده است. او به سادگی در حالت سکون بود))

فهرستی از تمام مواد این مجموعه در ابتدای این مقاله است.

نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION