Rreth nesh
Në 1C ne zhvillojmë jo vetëm një platformë mbi и , por edhe aplikacionet Java - në veçanti mjedisi i ri i zhvillimit bazuar në Eclipse dhe një server mesazher të integruar thellësisht me platformën - .
Hyrje
Ne më së shpeshti përdorim maven si një sistem ndërtimi për aplikacionet Java, dhe në këtë artikull të shkurtër do të donim të flisnim për një nga problemet me të cilat duhej të përballeshim në procesin e organizimit të zhvillimit dhe për qasjen që na lejoi ta kapërcejmë këtë problem.
Parakushtet dhe rrjedha e punës
Për shkak të specifikave të zhvillimit në projektet tona maven, ne përdorim mjaft module, varësi dhe projekte për fëmijë. Numri i skedarëve pom në një pemë mund të jetë në dhjetëra apo edhe qindra.

Duket: nuk ka punë të madhe, ata e krijuan një herë dhe e harruan atë. Nëse keni nevojë të ndryshoni ose shtoni diçka në të gjithë skedarët menjëherë, ka shumë mjete të përshtatshme në redaktues dhe IDE. Cili është ndryshimi më i zakonshëm i rregullt në pom.xml? Ne besojmë se ndryshimet në versionet dhe varësitë e projektit. Ndoshta dikush do të dëshirojë të debatojë me këtë, por kjo është pikërisht situata me ne. Arsyeja qëndron në faktin se, së bashku me kernelin, ne po zhvillojmë njëkohësisht shumë nga bibliotekat tona, dhe për riprodhueshmërinë e vazhdueshme të rezultateve të ndërtimit dhe testimit, përdorimi i fotografive nuk na duket një qasje e përshtatshme. Për këtë arsye, është e nevojshme të rritet numri i versionit në projekte me çdo ndërtim.
Gjithashtu, herë pas here, një zhvillues duhet të ndërtojë degën e tij të një biblioteke dhe të kontrollojë funksionalitetin e saj ndaj të gjitha varësive, për të cilat ai duhet të ndryshojë manualisht versionin e të gjithave.
Zgjidhja fillestare
Me ndryshime kaq të shpeshta dhe të shumëfishta të versioneve, unë dua të thjeshtoj dhe automatizoj procesin brenda CI. Këtu vjen në shpëtim një shtojcë e përshtatshme dhe e njohur. versions-maven-plugin - lidheni atë dhe niseni atë
mvn -N versionet:set -DnewVersion=2.0.1
dhe Maven do të bëjë gjithçka siç duhet: do të kalojë nëpër hierarki nga lart poshtë, duke zëvendësuar të gjitha versionet - bukurinë! Tani gjithçka që mbetet është të ngrini një kërkesë për tërheqje, kolegët do të shqyrtojnë ndryshimet dhe ju mund të bashkoheni shpejt me trungun. Shpejt? Pavarësisht se si është. Nja dyqind pom.xml për shqyrtim, dhe kjo nuk po llogarit kodin. Për më tepër, askush nuk është i sigurt nga konfliktet e bashkimit me një numër kaq të madh skedarësh të ndryshuar. Duhet të theksohet këtu se në procesin CI, ndryshimet e versionit ndodhin automatikisht së bashku me ndryshimet në funksionalitet, dhe jo disi veçmas.
Karakteristika të reja
Për një kohë u qetësuam dhe, pasi dhamë dorëheqjen, jetuam kështu deri në djemtë nga Maven, duke filluar me versionin 3.5.0-beta-1, nuk përfshinte mbështetje për të ashtuquajturat "mbajtës të vendeve" të versioneve. Thelbi i këtyre zëvendësuesve është se pom.xml në vend të një treguesi specifik të versionit të projektit, përdoren variabla ${rishikim}, ${sha1} и ${kangjelist}. Vetë vlerat e këtyre vetive vendosen ose në elementPronat>, ose ato mund të përcaktohen përmes një vetie të sistemit
mvn -Drevision=2.0.0 paketë e pastër
Vlerat e vetive të sistemit kanë përparësi ndaj vlerave të përcaktuara nëPronat>.
Prindi
4.0.0
org.apache
apache
18
org.apache.maven.ci
ci-prind
E para CI Friendly
${revision}${sha1}${changelist}
...
1.3.1
-SNAPSHT
Pasardhës
4.0.0
org.apache.maven.ci
ci-prind
${revision}${sha1}${changelist}
org.apache.maven.ci
ci-fëmijë
...
Nëse dëshironi të ndërtoni versionin 2.0.0-SNAPSHOT, atëherë thjesht përdorni
mvn -Drevision=2.0.0 paketë e pastër
Nëse dëshironi të bëni një version, atëherë thjesht rivendosni SNAPSHOT
mvn -Dchangelist= paketë e pastër
* Shembujt e mësipërm janë marrë nga në faqen e internetit të Projektit Maven Apache
Realitet i ashpër
Gjithçka është e mirë dhe e shëndetshme, është koha për të ndjerë një ndjenjë kënaqësie, por jo. Rezulton se kjo metodë nuk do të funksionojë për instalim dhe vendosje, pasi nuk do të zëvendësohet në përshkrimet e objekteve të publikuara në depo ${rishikim} për kuptimin e saj dhe maven nuk do ta kuptojë më se për çfarë bëhet fjalë.
org.apache
apache
${rishikim}
Një dritë në fund të një tuneli
Ne duhet të kërkojmë një zgjidhje për problemin. Mund ta shpëtonte situatën . Kjo shtojcë zgjidh të gjitha variablat në pom, por në të njëjtën kohë shkurton shumë informacione të tjera që nevojiten vetëm gjatë montimit dhe nuk nevojiten kur importoni objekte të publikuara në projekte të tjera. Shtojca gjithashtu "rregullon" të gjitha varësitë prind-fëmijë, dhe si rezultat, ju merrni një pom të sheshtë që përfshin gjithçka që ju nevojitet. Bezdisja ishte se shkurtonte shumë "shtesë", gjë që nuk na përshtatej fare. Pas studimit të informacionit për zhvillimin e kësaj shtojce, doli që ne nuk jemi të vetmit në univers, dhe përsëri në gusht 2018, u krijua një kërkesë tërheqjeje në Github në depon e shtojcave me dëshirën për ta bërë të mundur të përcaktojmë vetë se si të “prishet” pom.xml. Zhvilluesit dëgjuan zërat e atyre që vuanin dhe tashmë në dhjetor, me lëshimin e versionit të ri 1.1.0, një modalitet i ri, solveCiFriendliesOnly, u shfaq në shtojcën flatten-maven, e cila ishte më e përshtatshme se kurrë - largohet pom.xml siç është, përveç elementit dhe lejon ${rishikim}, ${sha1} и ${kangjelist}.
Shtimi i një shtojce në projekt
org.codehaus.mojo
flatten-maven-plugin
1.1.0
e vërtetë
zgjidh CiFriendliesOnly
rrafshoj
proces-burimet
rrafshoj
rrafshoj.i pastër
pastër
pastër
Done!
Fund i lumtur
Që tani e tutje, për të ndryshuar versionin e të gjithë projektit dhe për të bërë të ditur të gjitha varësitë për të, ne vetëm duhet të modifikojmë elementinrishikim> vetëm në rrënjë pom.xml. Në shqyrtim nuk mbërrijnë njëqind apo dy nga këto dosje me të njëjtin ndryshim, por një. Epo, nuk ka nevojë të përdoret versions-maven-plugin.
Burimi: www.habr.com
