Isang artikulo mula sa isang serye tungkol sa paglikha ng isang proyekto ng Java (nasa dulo ang mga link sa iba pang mga materyales). Ang layunin nito ay pag-aralan ang mga pangunahing teknolohiya, ang resulta ay pagsulat ng isang telegram bot. Pagbati, mahal na mga mambabasa. Gaya ng inilarawan sa nakaraang bahagi, pupunta tayo ayon sa plano. Nakagawa na kami ng isang proyekto at oras na para punan ito ng code. Ngayon ang lahat ng mga isyu ay idaragdag bilang mga hiwalay na commit. Ilalarawan ko ang lahat ng kailangan dito. Kung may napalampas akong isang bagay o hindi ito malinaw na ilarawan, magtanong sa mga komento, susubukan kong sagutin.
Nagsusulat kami ng JRTB-0M
Sa gawaing ito kailangan naming magdagdag ng walang laman na SpringBoot framework para sa hinaharap na trabaho. Gagawin namin ito sa parehong paraan tulad ng ginawa namin sa artikulo tungkol sa SpringBoot + Flyway . I-download ang proyekto , buksan ito sa IDEA at lumikha ng bagong sangay na tinatawag na JRTB-0 . Inilarawan ko kung paano ito gagawin sa pamamagitan ng isang ideya dito . Gagawin nitong mas madali para sa amin na subaybayan ang trabaho sa hinaharap. Alam mo na ba na wala nang master branch? Ngayon ito ay tinatawag na neutrally - main . Kaya nasanay na tayo. Bagaman, sa totoo lang, maaari nating palitan ito ng pangalan pabalik sa master. Pumunta kami sa Spring Initializr at lumikha ng SpringBoot framework para sa aming bot. Sa ngayon, ang pinakabatang bersyon ng boot sprint na inaalok ay 2.3.7, kunin natin ito. Ilalarawan ko nang hiwalay ang mga sumusunod na setting:- Project: Maven Project - napag-usapan na natin si Maven dito at dito . Samakatuwid, ilalarawan ko lamang kung ano ang hindi ko ibinunyag sa mga nakaraang artikulo. Kung mayroong gayong "mga puting spot", siyempre)
- Wika: Java - malinaw ang lahat dito. Kung may pagnanais, maaari naming muling isulat ang bagay na ito sa Kotlin. Kakabili ko lang ng librong Kotlin in Action, sabay nating matutunan ang Kotlin))
- Spring Boot: 2.3.7 - kinukuha namin ang pinakamaliit na bersyon na inaalok upang maalis ang anumang mga problema. Isa na itong ganap na modernong bersyon ng boot.
- Pangkat: com.github.javarushcommunity - dito pipiliin namin ang domain kung saan naka-host ang aming pangkat ng mga repositoryo.
- Artifact: javarush-telegrambot - maximum na paglalarawan ng proyekto.
- Pangalan: Javarush TelegramBot - isusulat namin ito nang buo dito.
- Paglalarawan: Telegram bot para sa Javarush mula sa komunidad patungo sa komunidad - narito ang isang mas detalyadong paglalarawan ng proyekto.
- Pangalan ng package: com.github.javarushcommunity.jrtb - dito maaari ka nang gumamit ng abbreviation para sa pangalan ng proyekto. Ngayon ang proyekto ay magsisimula sa paketeng ito. Bakit ang dami? Upang kapag nagdagdag kami ng iba pang mga proyekto sa classpath, sila ay nasa iba't ibang mga pakete. Ang bawat isa sa kanilang sariling natatanging paraan. Mahalaga ito upang mapanatili ang mga prinsipyo ng OOP.
- Packaging: Jar ang aming pamantayan)
- Java: 11 - mauuna tayo ng isang hakbang. Sa palagay ko ay hindi ako gagamit ng mga inobasyon pagkatapos ng ikawalong Java, ngunit hayaan mo na. Hindi siya humihingi ng pagkain)... ang desisyong ito ay magbibigay sa atin ng isang maliit na Easter egg sa hinaharap)
Pagse-set up ng proseso ng CI
Pumunta kami sa ginawang pull request: sa ibaba makikita namin na wala kaming Continuous Integration na na-configure (simula dito - CI). Well, hindi ito naka-configure, kaya ano? Bakit kailangan natin ng CI? Ano naman ang CI? Ito ay humigit-kumulang sa listahan ng mga tanong na dapat nating alalahanin sa sandaling ito. Sa pangkalahatan, ang CI ay isang tuluy-tuloy na proseso ng pagsasama ng code sa isang karaniwang base ng code at pagpapatakbo ng isang build ng proyekto bago iyon. Ang tinatawag na build (mula sa English build). Sa bawat oras na bumuo kami ng isang proyekto, tinitiyak namin na ang proyekto ay pinagsama-sama, ang lahat ng mga pagsubok nito ay matagumpay na naipasa, at pagkatapos mabuo ang proyekto, maaari kang magdagdag ng mga autotest mula sa mga tester hanggang sa CI na pinapatakbo sa partikular na build na ito. Sa ganitong paraan, mas nagiging kumpiyansa tayo na gumagana ang mga bagong pagbabago gaya ng inaasahan namin at hindi sinisira ang dating functionality. Maganda rin ang CI dahil awtomatiko itong magsisimula pagkatapos i-update ang code base. Iyon ay, itinulak namin ang aming mga pagbabago sa sangay at nagsimula ang proseso - pagpupulong, mga pagsubok, mga autotest at iba pang mga hakbang. Kung mabigo ang alinman sa mga hakbang na ito, ituturing na sira ang build at hindi maaaring isama sa pangunahing sangay. Ito mismo ang gagawin namin ngayon: magdaragdag kami ng GitHub Actions, na tatakbo sa aming code pagkatapos ng push. Akmang-akma ang GitHub Actions sa aming GitHub Flow, kaya gagamitin namin ito para i-automate ang aming trabaho. Ang tool na ito ay napakalakas at malaki, ngunit sa ngayon ay gagamitin lamang namin ito upang patakbuhin ang build at suriin kung ito ay binuo kung kinakailangan. Upang paganahin ito, hanapin ang button na Mga Pagkilos sa pahina ng repositoryo at sundan ito: Hanapin ang Trabaho ng Patuloy na Pagsasama na kailangan namin: I-click ang I-set up ang workflow na ito. Susunod, inaalok kaming gamitin ang kanilang template: lubos kaming sumasang-ayon, linawin lang natin nang kaunti ang lahat:# 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
Ito ay nagpapahiwatig na ang GitHub Action ay tinatawag sa dalawang kaso:
- Kapag ang isang push ay ginawa sa pangunahing sangay.
- Kapag ang isang pull request ay ginawa sa pangunahing sangay.
GO TO FULL VERSION