JavaRush /Блоги Java /Random-TG /Мо лоиҳа менависем. SpringBoot -ро илова кунед ва раванди...
Roman Beekeeper
Сатҳи

Мо лоиҳа менависем. SpringBoot -ро илова кунед ва раванди CI - "Лоиҳаи Java аз A то Я" -ро насб кунед

Дар гурӯҳ нашр шудааст
Мақола аз як силсила дар бораи эҷоди лоиҳаи Java (пайвандҳо ба дигар маводҳо дар охир мебошанд). Ҳадафи он таҳлor технологияҳои калидӣ мебошад, ки натиҷааш навиштани боти телеграмма мебошад. Салом, хонандагони азиз. Тавре ки дар қисми қаблӣ тасвир шудааст , мо мувофиқи нақша меравем. Мо аллакай лоиҳа эҷод кардем ва вақти он расидааст, ки онро бо code пур кунем. Акнун ҳама масъалаҳо ҳамчун ӯҳдадориҳои алоҳида илова карда мешаванд. Ман ҳама чизи заруриро дар ин ҷо тавсиф мекунам. Агар ман чизеро пазмон шуда бошам ё онро ба таври кофӣ тавсиф накунам, дар шарҳҳо пурсед, ман кӯшиш мекунам ҷавоб диҳам."Лоиҳаи Java аз А то Я": Мо лоиҳа менависем.  SpringBoot-ро илова кунед ва раванди CI -ро танзим кунед - 1

Мо JRTB-0M менависем

Дар ин вазифа мо бояд чаҳорчӯбаи холии SpringBoot-ро барои кори оянда илова кунем. Мо инро ҳамон тавре мекунем, ки мо дар мақола дар бораи SpringBoot + Flyway кардаем . Лоиҳаро зеркашӣ кунед , онро дар IDEA кушоед ва фorали нав бо номи JRTB-0 эҷод кунед . Ман тасвир кардам, ки чӣ тавр ин корро тавассути як идея дар ин ҷо иҷро кунам . Ин барои мо пайгирии кор дар оянда осонтар мешавад. Оё шумо аллакай медонистед, ки дигар фorали усто"Лоиҳаи Java аз А то Я": Мо лоиҳа менависем.  SpringBoot-ро илова кунед ва раванди CI -ро танзим кунед - 2 вуҷуд надорад ? Ҳоло он бетараф номида мешавад - асосӣ . Пас, мо ба он одат мекунем. Ҳарчанд, ростқавлона, мо ҳамеша метавонем онро ба устод иваз кунем. Мо ба Spring Initializr меравем ва барои боти худ чаҳорчӯбаи SpringBoot эҷод мекунем. Дар айни замон, versionи ҷавонтарини sprint boot пешниҳодшуда 2.3.7 аст, биёед онро гирем. Ман танзимоти зеринро алоҳида тавсиф мекунам:"Лоиҳаи Java аз А то Я": Мо лоиҳа менависем.  SpringBoot-ро илова кунед ва раванди CI -ро танзим кунед - 3
  • Лоиҳа: Лоиҳаи Maven - мо аллакай Maven-ро дар ин ҷо ва дар ин ҷо муҳокима кардем . Аз ин рӯ, ман ба таври иловагӣ танҳо он чизеро, ки дар мақолаҳои қаблӣ ошкор накардаам, тавсиф мекунам. Агар чунин "доғҳои сафед" вуҷуд дошта бошанд, албатта)
  • Забон: Java - дар ин ҷо ҳама чиз равшан аст. Агар хоҳише бошад, мо метавонем ин масъаларо дар Котлин дубора нависем. Ман ба худам як китоби Котлин дар амал харидаам, мо Котлинро якҷоя меомӯзем))
  • Spring Boot: 2.3.7 - мо versionи хурдтарини пешниҳодшударо барои бартараф кардани мушкилот мегирем. Ин аллакай versionи комилан муосири боркунӣ мебошад.
Метамаълумоти лоиҳа:
  • Гурӯҳ: com.github.javarushcommunity - дар ин ҷо мо доменеро интихоб мекунем, ки дар он гурӯҳи анбори мо ҷойгир аст.
  • Артефакт: javarush-telegrambot - тавсифи максималии лоиҳа.
  • Ном: Javarush TelegramBot - мо онро пурра дар ин ҷо менависем.
  • Тавсифи: Боти Telegram барои Javarush аз ҷомеа ба ҷомеа - дар ин ҷо тавсифи муфассали лоиҳа аст.
  • Номи баста: com.github.javarushcommunity.jrtb - дар ин ҷо шумо метавонед аллакай ихтисораи номи лоиҳаро истифода баред. Акнун лоиҳа бо ин баста оғоз мешавад. Чаро ин қадар зиёд? Ҳамин тавр, вақте ки мо лоиҳаҳои дигарро ба синфхона илова мекунем, онҳо дар бастаҳои гуногун хоҳанд буд. Ҳар яке бо роҳи беназири худ. Ин барои нигоҳ доштани принсипҳои OOP муҳим аст.
  • Бастабандӣ: кӯза стандарти мост)
  • Java: 11 - мо як қадам пеш хоҳем шуд. Ман фикр намекунам, ки ман пас аз ҳаштуми Java навоварӣ истифода хоҳам кард, аммо бигзор бошад. Ӯ барои хӯрок талаб намекунад)... ин қарор дар оянда ба мо як тухми хурди Пасха медиҳад)
Мо ҳоло ягон вобастагӣ илова намекунем. Барои ин вазифа ба мо лозим нест. Пас аз пур кардани ҳамаи ин, мо мегирем (инҷо истиноди лоиҳаи тавлидшуда аст): "Лоиҳаи Java аз А то Я": Мо лоиҳа менависем.  SpringBoot-ро илова кунед ва раванди CI-ро танзим кунед - 4Пас аз пур кардани он, ГЕНЕРАТ-ро клик кунед ва ҳамаи дохor архивро ба лоиҳаи худ илова кунед. "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 5Файлҳоро ба лоиҳа илова кунед. Дар натиҷа, мо ариза дорем. Барои санҷидани он, ки оё он тамоман ҷамъ карда шудааст, ба терминал равед ва нависед: $ mvn бастаи тоза"Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 6 Агар шумо ҳамон тавре ки аз ин ҷо дошта бошед, ҳамааш хуб аст: лоиҳа ҷамъ карда шудааст ва jarnik аллакай дар папкаи мақсаднок омода аст. Дар ин лаҳза, вазифа дар доираи тавсиф омода аст. Ин оддӣ аст, дуруст? Аз ин рӯ, мо ӯҳдадор мешавем ва ба фorали худ тела медиҳем: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 7Мо дар аввали тавсифи ӯҳдадорӣ номи вазифаи худро илова мекунем, то баъдтар маълум шавад, ки кор дар доираи кадом вазифа анҷом дода шудааст. Фармоиш ва тела -ро клик кунед ... "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 8Бори дигар мо дида мебароем ва месанҷем, ки маҳз чӣ мехоҳем аз анбори маҳаллӣ ба дурдаст тела диҳем ва боварӣ ҳосил кунем, ки ҳама чиз хуб аст, Push -ро пахш кунед . Қадами навбатии мо чист? Тибқи ҳама қоидаҳо (ки онро дар ин мақола хондан мумкин аст, дар қисмат дар бораи ҷараёни GitHub), шумо бояд барои фorали асосӣ дархости кашидан эҷод кунед ва интизор шавед, ки касе аз даста codeро аз назар гузаронад. Азбаски ман худам ҳастам, ман расман дархости ҷалб эҷод мекунам ва ҳама чизро аз нав дида мебароям. Ман ба саҳифаи репозиторий меравам ва Github аллакай медонад, ки мо илова дорем ва пешниҳоди эҷоди дархости кашиданро пешниҳод мекунад: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 9Барои ватандӯстон монеа нест (в) - мо онро тавре ки пешниҳод кардем, эҷод мекунем. Мо ҳамон нишона, лоиҳаеро, ки дар вазифае, ки мо рӯи он кор карда истодаем, муқаррар мекунем ва тавсифро пур мекунем: Эҷоди дархостро"Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 10 пахш кунед .

Танзими раванди CI

Мо ба дархости ҷалби офаридашуда меравем: дар зер мебинем, ки мо Интегратсияи доимиро танзим накардаем (минбаъд - CI). "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 11Хуб, он танзим нашудааст, пас чӣ? Чаро ба мо умуман CI лозим аст? Ба ҳар ҳол CI чист? Ин тақрибан рӯйхати саволҳоест, ки дар айни замон моро ба ташвиш меорад. Умуман, CI як раванди муттасor муттаҳид кардани code ба пойгоҳи умумии code ва пеш аз он сохтани лоиҳа мебошад. Сохта ном (аз забони англисӣ сохта). Ҳар дафъае, ки мо лоиҳа месозем, мо боварӣ ҳосил мекунем, ки лоиҳа тартиб дода шудааст, ҳама санҷишҳои он бомуваффақият гузаштаанд ва инчунин пас аз сохтани лоиҳа, шумо метавонед санҷишҳои автоматиро аз озмоишгарон ба CI илова кунед, ки дар ин сохтани мушаххас иҷро карда мешаванд. Бо ин роҳ, мо боварӣ дорем, ки тағиротҳои нав тавре кор мекунанд, ки мо интизор будем ва функсияҳои қаблиро вайрон намекунанд. CI низ хуб аст, зеро он пас аз навсозии пойгоҳи code ба таври худкор оғоз меёбад. Яъне мо тағиротҳои худро ба фorал тела додем ва раванд оғоз шуд - монтаж, озмоишҳо, автотестҳо ва дигар қадамҳо. Агар яке аз ин қадамҳо ноком шавад, сохтмон вайроншуда ҳисобида мешавад ва онро ба шохаи асосӣ муттаҳид кардан мумкин нест. Ин маҳз ҳамон чизест, ки мо ҳоло мекунем: мо GitHub Actions илова мекунем, ки codeи моро пас аз пахш иҷро мекунад. Амалҳои GitHub ба ҷараёни GitHub-и мо комилан мувофиқат мекунанд, аз ин рӯ мо онро барои автоматикунонии кори худ истифода хоҳем кард. Ин асбоб хеле пурқувват ва калон аст, аммо ҳоло мо онро танҳо барои иҷро кардани сохтмон истифода мебарем ва тафтиш мекунем, ки он дар ҳолати зарурӣ ҷамъ карда шудааст. Барои фаъол кардани он, тугмаи Амалиётро дар саҳифаи репозиторий пайдо кунед ва ба он пайравӣ кунед: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 12Ҷараёни кории муттасor ҳамгироӣ, ки ба мо лозим аст, пайдо кунед: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 13Танзими ин ҷараёни корро клик кунед. Баъдан, ба мо пешниҳод карда мешавад, ки қолаби онҳоро истифода барем: мо комилан розӣ ҳастем, биёед ҳама чизро каме равшан кунем:
# This workflow will build a Java project with Maven
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven

name: Java CI with Maven

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Set up JDK 1.8
      uses: actions/setup-java@v1
      with:
        java-version: 1.8
    - name: Build with Maven
      run: mvn -B package --file pom.xml
Ин нишон медиҳад, ки Action GitHub дар ду ҳолат даъват карда мешавад:
  1. Вақте ки ба шохаи асосӣ тела дода мешавад.
  2. Вақте ки дархости кашидан дар фorали асосӣ эҷод карда мешавад.
Бахши корҳо қадамҳои иҷрошавандаро тавсиф мекунад. Мо танҳо як қадам дорем - сохтмон. Он нишон медиҳад, ки лоиҳаи мо дар Ubuntu бо фармони mvn -B package --file pom.xml оғоз мешавад . Ин маҳз ҳамон чизест, ки мо дар маҳал кардем. Агар шумо хоҳед, ки чизеро дар ин ҷо тағир диҳед, лутфан. Ман ин қолабро истифода хоҳам кард, он барои ман кофӣ хоҳад буд. Ман Оғозро клик мекунам , барои танзими раванд эҷод кардани фorали навро интихоб мекунам ва сипас Файли навро пешниҳод кунед . Аммо раванди сохтмон афтод... "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 14Тавре ки шумо мебинед, Нокомӣ пас аз 14 сония - созед. Чунин ба назар мерасад, ки чизе рух додааст: биёед ба маҷлис гузарем ва тафсилотро бубинем: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 15Дар он гуфта мешавад, ки ман чунин хотираро ёфта натавонистам. Чаро? Оҳ, маҳз, маҳз! Зеро мо дар шохаи усто дигаргунихо ба вучуд овардем, вале вазифаи мо хануз нест. Ва аз ин рӯ, ӯ хотираро наёфт ... Бинобар ин, ҳоло мо ин корро мекунем: мо ин маълумотро ба устод муттаҳид мекунем, баъд шохаи асосиро ба JRTB-0 муттаҳид мекунем ва он гоҳ ҳама чиз бояд хуб бошад. Дар дархости кашидан бо тағиротҳои амалҳои github, клик кунед Якҷоя дархости кашидан : "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 16Ва такрор кунед Тасдиқи якҷоякунӣ . Баъд, Github аз мо хоҳиш мекунад, ки фorалеро, ки мо дар он кор мекардем, нест кунем. Мо рад намекунем ва нест мекунем: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 17Баъдан, ман дар дархости кашидани SpringBoot наёфтам, ки чӣ гуна тағиротро аз фorали асосӣ аз вебсайт кашед, бинобар ин мо онро тавассути IDEA дастӣ иҷро мекунем.

Қадами 1: Навсозии фorали асосӣ ба анбори маҳаллӣ.

Идея ин аст, ки ба фorали асосӣ равед, ctrl + t -ро пахш кунед ва фorали усторо навсозӣ кунед:"Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 18

Қадами 2: Тағиротро аз фorали асосӣ ба фorали JRTB-0 якҷоя кунед.

Биёед ба JRTB-0 равем ва асосии онро ба он муттаҳид кунем."Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 19

Қадами 3: тағиротро пахш кунед.

Ctrl + shift + k пахш кунед ва пахшро тасдиқ кунед. Акнун интизори онем, ки сохтмон мегузараду сабз мешавад!)) Аммо боз сурх мешавад. Ин чист? Мо ба гузоришҳои амалҳо ворид мешавем ва мебинем, ки мо дар versionҳои Java ҳамоҳанг нестем. Дар GitHubActions он 8 аст, аммо мо 11-ро истифода мебарем: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 20Ҳоло ду интихоб вуҷуд дорад: ё амалҳоро ислоҳ кунед, ё versionро ба ҳаштум паст кунед. Варианти аввал, ба назари ман, беҳтар ва дурусттар аст. Мо дар як ӯҳдадории алоҳида тағирот ворид мекунем: мо на бо Java 8, балки бо Java 11 кор хоҳем кард. "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 21Ва баъд аз он, ниҳоят, ҳама чиз барои мо кор кард ва мо тавонистем раванди CI-и худро барои лоиҳа таъсис диҳем. Чунин чизҳо бояд дар марҳилаи ибтидоӣ таъсис дода шаванд, то ки шумо баъдтар дар бораи он хавотир нашавед. Акнун шумо мебинед, ки сохтмон гузаштааст ва шумо метавонед бидуни тарс якҷоя шавед:"Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 22

Ташкor кор бо фorалҳо дар анбор

Шумо инчунин метавонед чунин чизҳоро дар репозиторий ҳамчун қоидаҳо ҳангоми кор бо фorалҳо танзим кунед. Ман мехоҳам онро тавре созам, ки шохаи асосиро мустақиман тела додан мумкин нест, балки танҳо тавассути дархостҳои кашидан ва ман мехоҳам онро тавре созам, ки якҷоя кардани дархости кашидан дар сурати ноком шудани сохтмон (яъне, агар Амалҳои GitHub дар як қадам). Барои ин, тугмаи Танзимотро пайдо кунед ва Фorалҳоро интихоб кунед : Дар айни замон қоидаҳо барои фorалҳо вуҷуд надоранд, аз ин рӯ биёед тавассути тугмаи Иловаи қоида"Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 23 як навро илова кунем : Дар ин ҷо танзимотҳо зиёданд ва ҳар кас метавонад коре кунад, ки ба худ мувофиқ бошад. ниёз дорад. Барои он ки сохтан дар дархости кашидан пеш аз якҷояшавӣ бомуваффақият гузарад, қуттии қайдро барои Талаб кардани санҷиши вазъ пеш аз якҷояшавӣ илова кунед ва ҳолати ба мо лозимиро интихоб кунед - сохтани. Ҳоло ин кифоя аст: пас шумо метавонед ин рульро навсозӣ кунед ва бубинед, ки боз чӣ мехоҳед. Барои эҷод кардани ин чархаи рули Эҷод -ро клик кунед . Минбаъд, агар мо дубора ба дархости ҷалби худ равем, мо мебинем, ки чеки мо ҳоло талаб карда шудааст: Биёед саҳифаи лоиҳаи худро тафтиш кунем, ки дар он ҳама вазифаҳо нишон дода шудаанд: Шумо фавран мебинед, ки кадом вазифа кор карда мешавад. Гузашта аз ин, кор аллакай анҷом дода шудааст ва вазифа дар ҳолати баррасии code қарор дорад."Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 24"Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 25"Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 26"Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 27

Пӯшидани JRTB-0

Ҳоло, ки мо дархости ҷалбро омода кардаем ва барои он CI таҳия кардем, мо бояд марҳилаи охиринро анҷом диҳем: вазифаро пӯшед, онро ба ҳолати дуруст интиқол диҳед, тағиротро дар лоиҳаи мо дар тахта бубинед. Дархости ҷалби мо омода аст, ки ба устод якҷоя карда шавад. Дар дархости кашидан, тугмаи якҷоякунии дархостро пахш кунед : "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 28Пас аз якҷоякунии муваффақ, шумо метавонед онро нест кунед ва одатан ин корро кунед. Ман ин корро намекунам, то барои шумо дидани тағирот дар байни фorалҳо/фармоишҳо осонтар шавад. Ҳамин ки дархости ҷалбкунӣ муттаҳид карда мешавад, он ба таври худкор дар Шӯрои лоиҳаи мо иҷро мешавад: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 29Қадами охирин ин бастани масъала (масъала) бо истиноди дархости кашидан, ки дар он буд: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 30Ин масъала ба таври худкор иҷро мешавад. тахта. "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 31Ибтидо шуд, вазифаи якум ичро шуд!

хулосахо

Чунин ба назар мерасад, ки мо аллакай кор ва навиштани codeро оғоз кардаем, аммо танзимот ҳанӯз лозим аст. Бале, ин вақт лозим аст, аммо вақте ки лоиҳа калонтар ва мураккабтар мешавад, он сад маротиба фоида меорад ва ба шумо кафолат лозим аст, ки шумо танҳо бо як ӯҳдадорӣ ҳама чизро вайрон нахоҳед кард. Дархости кашидан, ки ин ҳама рӯй медиҳад, дар ин ҷо дастрас аст . Шояд, вақте ки шумо хонед, он аллакай баста мешавад. Ин даҳшатнок нест: тамоми маълумоти зарурӣ тавассути пайванд нигоҳ дошта мешавад. Ташаккур ба ҳама барои хондан, ба зудӣ вохӯред. Бештар!

Рӯйхати ҳамаи маводҳои силсила дар аввали ин мақола аст.

Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION