JavaRush /Блоги Java /Random-TG /Қисми 4: Асосҳои Maven

Қисми 4: Асосҳои Maven

Дар гурӯҳ нашр шудааст
Ин мавод як қисми силсилаи «Муқаддима ба рушди корхона» мебошад. Мақолаҳои қаблӣ: Қисми 4. Асосҳои Maven - 1Maven як асбоби идоракунӣ ва сохтани лоиҳаҳо - ёрдамчии воқеии барномасози Java мебошад. Он ҳаёти таҳиягарро дар ҳама марҳилаҳои кор осон мекунад: аз эҷоди сохтори лоиҳа ва пайваст кардани китобхонаҳои зарурӣ то ҷойгиркунии маҳсулот дар server. Ҳангоми кор бо ягон чаҳорчӯба, шумо бояд Maven-ро истифода баред. Пас биёед имрӯз вазифаҳои асосии онро дида бароем ва бубинем, ки онҳо чӣ гуна бояд истифода шаванд.

Қадам ба қадам насби Maven

  1. Аввалан ба шумо лозим аст, ки Maven-ро тавассути зеркашии он аз ин пайванд насб кунед .

  2. Баъдан, шумо бояд бойгонии зеркашидашударо кушоед ва тағирёбандаи муҳити M2_HOME-ро ба истиноди ҷойгиршавии бойгонии кушодашуда насб кунед. Масалан, C:\Program Files\maven\

  3. Барои санҷидани он, ки ҳама чиз насб шудааст, дар сатри фармон нависед:

    mvn-version

  4. Агар маълумоти versionи Maven, Java ва ғайра нишон дода шавад, шумо барои рафтан омодаед.

  5. Акнун IntelliJIDEA-ро кушоед ва лоиҳаи нав созед. Дар равзанаи аввал Maven -ро интихоб кунед:

    Қисми 4. Асосҳои Maven - 2
  6. Баъдан-ро клик кунед ва қуттии муколамаи зеринро пур кунед:

    Қисми 4. Асосҳои Maven - 3
  7. Баъдан, лоиҳаро дар макони зарурӣ ҳамчун стандарт эҷод кунед.

    Пас аз таҳияи лоиҳа, ба сохтори он диққат диҳед:

    Қисми 4. Асосҳои Maven - 4
Ин сохтори стандартӣ барои лоиҳаи Maven аст :
  • папкаи src/main/java дорои синфҳои java мебошад;
  • дар src/main/resources - захираҳое, ки замимаи мо истифода мебарад (саҳифаҳои HTML, тасвирҳо, варақаҳои услуб ва ғайра);
  • src/test - барои санҷишҳо.
Инчунин ба файле, ки pom.xml ном дорад, диққат диҳед . Ин файли асосӣ барои идоракунии Maven аст . Тамоми тавсифи лоиҳа дар ин ҷо оварда шудааст. Дар он ҷо ҳоло маълумоти зиёд вуҷуд надорад, аммо мо ҳоло онро илова мекунем.

Идоракунии вобастагӣ дар Maven

Шояд шумо бо ибораи "менеҷери вобастагӣ" ё "менеҷери вобастагӣ" дучор шудаед. Maven метавонад ҳама чизро иҷро кунад. Бо шарофати Maven, ба шумо лозим нест, ки вақти зиёдеро барои ҷустуҷӯи китобхонаи зарурӣ дар Интернет сарф кунед, онро зеркашӣ кунед ва сипас онро ба лоиҳа пайваст кунед: танҳо китобхонаи лозимиро ба рӯйхати вобастагии Maven илова кунед. Вобастагӣ дар гиреҳи XML вобастагӣ навишта шудааст.Фарз мекунем, ки ба шумо китобхонаи Apache Commons IO дар лоиҳаи худ барои кори соддакардашуда бо файлҳо лозим аст. Барои илова кардани китобхона, дар pom.xml панҷ сатр нависед:
<dependency>
   <groupId>commons-io</groupId>
   <artifactId>commons-io</artifactId>
   <version>2.6</version>
</dependency>
pom.xml-и шумо ҳоло бояд чунин бошад:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        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>example.com</groupId>
   <artifactId>example</artifactId>
   <version>1.0-SNAPSHOT</version>

   <dependencies>
       <dependency>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
           <version>2.6</version>
       </dependency>
   </dependencies>
</project>
Пас аз ин, ба IntelliJ IDEA иҷозат диҳед, ки вобастагиро ворид кунад (қуттии муколама бояд дар кунҷи рости поён пайдо шавад). Акнун китобхона барои истифода омода аст:
import org.apache.commons.io.FileUtils;

import java.io.File;

public class TestMaven {
   public static void main(String[] args) {
       File tempDirectory = FileUtils.getTempDirectory();
   }
}
Ҳама вобастагии минбаъда низ бояд дар дохor теги <dependencies> навишта шаванд. Шояд шумо дар ҳайрат бошед: шумо аз куҷо медонед, ки кадом маълумотро дар бораи китобхона дар дохor теги <dependency> дохил кардан лозим аст? Дар ин ҷо ҳама чиз оддӣ аст. Дар чунин ҳолатҳо, ҳамеша се параметр муайян карда мешаванд: groupId, artifactId ва version. Шумо метавонед ин параметрҳоро бо ду роҳ пайдо кунед:
  1. Дар вебсайти китобхона. Агар ба мо Apache Commons IO лозим бошад, ба вебсайти расмӣ равед ва ҷадвали Маълумоти вобастагӣ -ро интихоб кунед. Ҳама маълумоти зарурӣ дар ин ҷост - шумо метавонед онро танҳо нусхабардорӣ кунед ва ба бахши вобастагии мо илова кунед.

  2. Дар анбори Maven . Дар ҷустуҷӯ "apache commons io" -ро ворид кунед ва шумо ҳамаи versionҳои дастраси китобхонаро хоҳед дид. Пас аз интихоби он чизе, ки ба шумо лозим аст, танҳо нусхабардорӣ кунед:

    <dependency>
               <groupId>commons-io</groupId>
               <artifactId>commons-io</artifactId>
               <version>2.6</version>
           </dependency>

    ва ба pom.xml-и худ илова кунед.

Намудҳои анборҳои Maven

Бори дигар дар бораи анбори Maven ёдовар шудан лозим аст, зеро мо воқеан дутои онҳо дорем - берунӣ (глобалӣ) ва маҳаллӣ дар компютери шумо. Ҳамаи китобхонаҳое, ки шумо ба лоиҳаҳои худ илова мекунед, дар анбори маҳаллӣ захира карда мешаванд. Вақте ки Maven вобастагии заруриро ба лоиҳа илова мекунад, вай аввал анбори маҳаллиро барои мавҷудияти чунин китобхона тафтиш мекунад ва танҳо агар он дар он ҷо онро наёбад, ба берунӣ рӯй медиҳад. Тавре ки шумо мебинед, шумо метавонед Maven-ро барои илова кардани вобастагӣ истифода баред, аммо ин ҳама коре нест.

Сохтани лоиҳаи Java бо истифода аз Maven

Ин хусусият метавонад барои як навкор бефоида бошад. Чаро ин лозим аст, агар IDE мавҷуд бошад? Аммо не! Аввалан, serverе, ки дар он шумо бояд барнома созед, метавонад на танҳо муҳити таҳия, балки интерфейси графикӣ дошта бошад. Дуюм, дар лоиҳаҳои калон, Maven бо вазифаҳои васл кардани лоиҳа беҳтар кор мекунад. Аз ин рӯ, биёед худро бо интизорӣ азоб надиҳем, балки раванди сохтани барномаро бо истифода аз Maven баррасӣ кунем.

Марҳилаҳо

Раванди сохтани барнома давраи зиндагии лоиҳаи Maven номида мешавад ва он аз марҳилаҳо иборат аст. Шумо метавонед онҳоро дар IDEA тавассути клик кардани Maven> Намуна> Давраи ҳаёт дар кунҷи рости боло бубинед: Қисми 4. Асосҳои Maven - 5Тавре ки шумо мебинед, 9 марҳила вуҷуд дорад:
  1. тоза - ҳамаи файлҳои тартибдодашударо аз директорияи мақсаднок нест мекунад (ҷое, ки артефактҳои анҷомёфта захира карда мешаванд);
  2. тасдиқ - тафтиш кардани он, ки оё ҳама маълумот барои сохтани лоиҳа мавҷуд аст;
  3. compile - файлҳои дорои codeи ибтидоӣ тартиб дода мешаванд;
  4. тест — озмоишҳо оғоз карда мешаванд;
  5. баста – файлҳои тартибдодашуда бастабандӣ карда мешаванд (ба кӯза, ҷанг ва ғ. бойгонӣ);
  6. тафтиш — санҷишҳо барои тасдиқи омодагии файли бастабандӣ гузаронида мешаванд;
  7. насб - баста дар анбори маҳаллӣ ҷойгир карда шудааст. Акнун он метавонад аз ҷониби дигар лоиҳаҳо ҳамчун китобхонаи беруна истифода шавад;
  8. сайт - ҳуҷҷатҳои лоиҳавӣ таҳия карда мешаванд;
  9. ҷойгиркунӣ - бойгонии ҷамъшуда ба анбори дурдаст нусхабардорӣ карда мешавад.
Ҳама марҳилаҳо пайдарпай иҷро карда мешаванд: шумо наметавонед, масалан, марҳилаи чорумро то анҷоми марҳилаҳои 1-3 оғоз кунед. Ду роҳи оғоз кардани марҳила вуҷуд дорад:
  • тавассути сатри фармон:

    бастаи mvn

    Қисми 4. Асосҳои Maven - 6
  • бо истифода аз Intellij IDEA:

    Қисми 4. Асосҳои Maven - 7

    Пеш аз оғози баста, марҳилаҳои тасдиқ, тартиб додан ва санҷиш иҷро карда мешаванд. Истисно марҳилаи тоза аст. Тавсия дода мешавад, ки онро пеш аз сохтани лоиҳаи нав даъват кунед. Марҳилаҳоро бо фосила ҷудо кардан мумкин аст:

    mvn бастаи тоза.

Инчунин, ҳар як марҳила марҳилаҳои қаблӣ ва баъдӣ дорад: масалан, пеш аз ҷойгиркунӣ, пас аз ҷойгиркунӣ, пеш аз тозакунӣ, пас аз тоза, аммо онҳо хеле кам истифода мешаванд. Илова бар ин, ҳар як марҳила ҳадафҳо дорад. Ҳадафҳои стандартӣ ба таври нобаёнӣ дохил карда мешаванд, ҳадафҳои иловагӣ бо плагинҳои Maven илова карда мешаванд. Баъзан дар баъзе марҳилаҳо ба шумо лозим меояд, ки функсияҳои иловагиро иҷро кунед. Барои ин плагинҳои Maven мавҷуданд. Рӯйхати плагинҳои расмиро дар вебсайти Maven пайдо кардан мумкин аст . Аммо бидонед, ки ҳоло ҳам бисёр плагинҳои фармоишӣ мавҷуданд, ки онҳоро дар захираҳои тарафи сеюм пайдо кардан мумкин аст. Хуб, албатта, агар эҳтиёҷоти экзотикӣ вуҷуд дошта бошад, шумо ҳамеша имкон доред, ки чунин плагинро худатон нависед .

Плагинҳо

Барои илова кардани плагини Maven ба лоиҳа, тавсифи он, ки ба вобастагӣ монанд аст, бояд дар pom.xml дар тегҳои <build> ва <plugins> ҷойгир карда шавад. Масалан, ба мо як плагин лозим аст, то тафтиш кунем, ки ҳамаи китобхонаҳои берунаи мо versionҳои охиринро истифода мебаранд. Пас аз ҷустуҷӯи каме дар Интернет, шумо метавонед ин плагинро бо дастурҳои истифода пайдо кунед. Биёед groupId, artifactId ва versionи онро танзим кунем. Биёед бинависем, ки ӯ бояд чӣ гуна ҳадафҳоро иҷро кунад ва дар кадом марҳила. Дар ҳолати мо, санҷиши вобастагӣ дар pom.xml ҷорӣ ба марҳилаи тасдиқкунӣ гузошта шудааст. Акнун «хотираи» мо чунин менамояд:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        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>example.com</groupId>
   <artifactId>example</artifactId>
   <version>1.0-SNAPSHOT</version>

   <build>
       <plugins>
           <plugin>
               <groupId>com.soebes.maven.plugins</groupId>
               <artifactId>uptodate-maven-plugin</artifactId>
               <version>0.2.0</version>
               <executions>
                   <execution>
                       <goals>
                           <goal>dependency</goal>
                       </goals>
                       <phase>validate</phase>
                   </execution>
               </executions>
           </plugin>
       </plugins>
   </build>

   <dependencies>
       <dependency>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
           <version>2.6</version>
       </dependency>
   </dependencies>
</project>
Мо ҳоло ҳам метавонем корро дар болои лоиҳаи худ идома диҳем. Аммо биёед кӯшиш кунем, ки versionи Apache Commons IO-ро ба 2.0 иваз кунем ва ба сохтани лоиҳа шурӯъ кунем. Мо ба даст меорем: [ERROR] Failed to execute goal com.soebes.maven.plugins:uptodate-maven-plugin:0.2.0:dependency (default) on project example: There is a more up-to-date version ( 2.6 ) of the dependency commons-io:commons-io:2.0 available. -> [Help 1] Дар ин ҷо мо хатогие дорем, ки аз плагин ба вуҷуд омадааст. Паёми хатогӣ мегӯяд, ки мо versionи 2.0-ро ҳангоми дастрас будани 2.6 истифода мебарем. Умуман, Maven як воситаи хеле муфид аст. Дар аввал истифода бурдани он душвор ба назар мерасад, аммо таҷриба кунед, лоиҳаҳои худро дар зери Maven эҷод кунед ва пас аз чанде шумо аз натиҷа хеле хурсанд хоҳед шуд. Ин мақола дидаву дониста тафсилоти зиёдеро дар бораи Maven аз даст дод - мо ба чизҳои муҳим тамаркуз кардем. Аммо барои комorят маҳдудият вуҷуд надорад: шумо метавонед дар бораи Maven бештар дар вебсайти расмии маҳсулот хонед . Қисми 5. Сервлетҳо. Навиштани замимаи оддии веб Қисми 6. Контейнерҳои сервлет Қисми 7. Муаррифии намунаи MVC (Model-View-Controller) Қисми 8. Навиштани барномаи хурди пурборкунандаи баҳор
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION