{"id":32476,"date":"2019-10-31T21:47:17","date_gmt":"2019-10-31T18:47:17","guid":{"rendered":"https:\/\/prohoster.info\/blog\/opyt-ispolzovaniya-flatten-maven-plugin-dlya-uproshheniya-versionirovaniya-v-maven-proektah\/"},"modified":"2019-10-31T21:47:17","modified_gmt":"2019-10-31T18:47:17","slug":"opyt-ispolzovaniya-flatten-maven-plugin-dlya-uproshheniya-versionirovaniya-v-maven-proektah","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/opyt-ispolzovaniya-flatten-maven-plugin-dlya-uproshheniya-versionirovaniya-v-maven-proektah","title":{"rendered":"Kogemus flatten-maven-plugin'i kasutamisest maven-projektide versioonihalduse lihtsustamiseks","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h4>Meist<\/h4>\n<p>\n1C-s arendame mitte ainult platvormi <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/269611\/\">1C: Ettev\u00f5te<\/a><\/noindex> j\u00e4rgnevaga <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/429678\/\">C++<\/a><\/noindex> ja <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/315414\/\">JavaScript<\/a><\/noindex>, vaid ka rakendusi Java-s \u2013 eelk\u00f5ige uut arenduskeskkonda <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/323508\/\">Enterprise Development Tools<\/a><\/noindex> Eclipse'i p\u00f5hjal ja s\u00fcgavalt platvormiga integreeritud s\u00f5numside serverit \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/422903\/\">Koost\u00f6\u00f6 s\u00fcsteemid<\/a><\/noindex>.<\/p>\n<h4>Sissejuhatus<\/h4>\n<p>\nJava-rakenduste ehitamise s\u00fcsteemina kasutame k\u00f5ige sagedamini mavenit, ja selles l\u00fchikeses artiklis tahaksime r\u00e4\u00e4kida \u00fchest probleemist, millega arenguprotsessi korraldamisel silmitsi seisisime, ja l\u00e4henemisest, mis v\u00f5imaldas selle probleemi \u00fcletada.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Eeldused ja t\u00f6\u00f6protsess<\/h4>\n<p>\nSeoses meie maven-projektide arenduse spetsiifikaga kasutame piisavalt palju mooduleid, s\u00f5ltuvusi ja alprojekti. \u00dches puu struktuuris v\u00f5ib pom-failide arv ulatuda k\u00fcmneteni v\u00f5i isegi sadadeni.<\/p>\n<p><img decoding=\"async\" alt=\"Kogemus flatten-maven-plugin&#039;i kasutamisest maven-projektide versioonihalduse lihtsustamiseks\" src=\"\/wp-content\/uploads\/2019\/04\/60eddb63fb9bd58eda2edc890e2f771f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTundub, et pole midagi hullu, korra loodi ja unustati. Kui tuleb midagi muuta v\u00f5i lisada k\u00f5igis failides korraga, on toimivaid t\u00f6\u00f6riistu toimetamises ja IDE-des piisavalt. Milline on k\u00f5ige levinum regulaarne muudatus pom.xml failis? Oleme kindlad, et see on projekti ja s\u00f5ltuvuste versioonide muutmine. V\u00f5ib-olla on kellegil soov selle vastu vaielda, kuid meil on see just nii. P\u00f5hjus peitub selles, et koos p\u00f5hikomponendiga arendame paralleelselt palju oma raamatukogusid ja pideva koostamise ning testimise tulemuste korduvuse tagamiseks ei n\u00e4e me snapshotide kasutamist mugava l\u00e4henemisviisi. Seet\u00f5ttu tuleb iga kogumise korral projektides versiooninumbrit t\u00f5sta.<\/p>\n<p>Samuti tekib arendajal aeg-ajalt vajadus koguda oma haru m\u00f5nest raamatukogust ja testida selle t\u00f6\u00f6d k\u00f5igi s\u00f5ltuvustega, mille jaoks tuleb k\u00f5igis neist k\u00e4sitsi versioon muuta.<\/p>\n<h4>Esialgne lahendus<\/h4>\n<p>\nNii sagedaste ja mitmekesiste versioonimuudatustega tahaks CI raames protsessi lihtsustada ja automatiseerida. Siin tuleb appi mugav ja tuntud plugin. <i>versions-maven-plugin<\/i> \u2014 \u00fchendame selle ja k\u00e4ivitame <\/p>\n<p><i>mvn -N versions:set -DnewVersion=2.0.1 <\/i><\/p>\n<p>ja Maven teeb k\u00f5ik nagu peab: l\u00e4heb l\u00e4bi hierarhia \u00fclevalt alla, asendab k\u00f5ik versioonid \u2014 ilus! N\u00fc\u00fcd j\u00e4\u00e4b \u00fcle vaid teha pull-request, kolleegid vaatavad muudatused \u00fcle ja saab kiiresti trunk'i sulanduda. Kiiresti? Kuidas veel! Paar-kolm sada <i>pom.xml<\/i> \u00fclevaatamiseks ja see ei h\u00f5lma isegi koodi. Lisaks ei ole merge-konfliktide eest keegi kaitstud, kui on nii palju muudetud faile. Siinkohal on oluline m\u00e4rkida, et CI protsessi k\u00e4igus muutuvad versioonid automaatselt koos funktsionaalsuse muutustega, mitte kuidagi eraldi.<\/p>\n<h4>Uued v\u00f5imalused<\/h4>\n<p>\nMe rahunesime hetkeks ja, leppides, elasime nii edasi, kuni poisid <noindex><a rel=\"nofollow\" href=\"http:\/\/maven.apache.org\/\">Maven Apache Project<\/a><\/noindex> kandsid Mavenisse, alates versioonist 3.5.0-beta-1, toetust nn \u00abasendajatele\u00bb (placeholders). Asendajate olemus on see, et <i>pom.xml<\/i> konkreetse projekti versiooni n\u00e4itamise asemel kasutatakse muutujaid <i>${revision}<\/i>, <i>${sha1}<\/i> ja <i>${changelist}<\/i>. Nende omaduste v\u00e4\u00e4rtused m\u00e4\u00e4ratakse kas elemendis &lt;<i>properties<\/i>&gt; v\u00f5i saab need m\u00e4\u00e4rata s\u00fcsteemi omaduse kaudu<\/p>\n<p><i>mvn -Drevision=2.0.0 clean package<\/i><\/p>\n<p>S\u00fcsteemi omaduste v\u00e4\u00e4rtused on eelised v\u00e4\u00e4rtustele, mis on m\u00e4\u00e4ratud &lt;<i>properties<\/i>&gt;.<\/p>\n<p><i><b>Vanem<\/b><br \/>\n&lt;project&gt;<br \/>\n\u00a0\u00a0&lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;<br \/>\n\u00a0\u00a0&lt;parent&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0&lt;groupId&gt;org.apache&lt;\/groupId&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0&lt;artifactId&gt;apache&lt;\/artifactId&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0&lt;version&gt;18&lt;\/version&gt;<br \/>\n\u00a0\u00a0&lt;\/parent&gt;<br \/>\n\u00a0\u00a0&lt;groupId&gt;org.apache.maven.ci&lt;\/groupId&gt;<br \/>\n\u00a0\u00a0&lt;artifactId&gt;ci-parent&lt;\/artifactId&gt;<br \/>\n\u00a0\u00a0&lt;name&gt;First CI Friendly&lt;\/name&gt;<br \/>\n\u00a0\u00a0&lt;version&gt;<b>${revision}${sha1}${changelist}<\/b>&lt;\/version&gt;<br \/>\n\u00a0\u00a0\u2026<br \/>\n\u00a0\u00a0&lt;properties&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0<b>&lt;revision&gt;<\/b>1.3.1<b>&lt;\/revision&gt;<\/b><br \/>\n\u00a0\u00a0\u00a0\u00a0<b>&lt;changelist&gt;<\/b>-SNAPSHOT<b>&lt;\/changelist&gt;<\/b><br \/>\n\u00a0\u00a0\u00a0\u00a0<b>&lt;sha1\/&gt;<\/b><br \/>\n\u00a0\u00a0&lt;\/properties&gt;<br \/>\n&lt;\/project&gt;<br \/>\n<\/i><br \/>\n<i><b>J\u00e4rglane<\/b><br \/>\n&lt;project&gt;<br \/>\n\u00a0\u00a0&lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;<br \/>\n\u00a0\u00a0&lt;parent&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0&lt;groupId&gt;org.apache.maven.ci&lt;\/groupId&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0&lt;artifactId&gt;ci-parent&lt;\/artifactId&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0&lt;version&gt;<b>${revision}${sha1}${changelist}<\/b>&lt;\/version&gt;<br \/>\n\u00a0\u00a0&lt;\/parent&gt;<br \/>\n\u00a0\u00a0&lt;groupId&gt;org.apache.maven.ci&lt;\/groupId&gt;<br \/>\n\u00a0\u00a0&lt;artifactId&gt;ci-child&lt;\/artifactId&gt;<br \/>\n\u00a0\u00a0\u00a0\u2026<br \/>\n&lt;\/project&gt;<br \/>\n<\/i><\/p>\n<p>Kui soovid \u00fcles ehitada versiooni 2.0.0-SNAPSHOT, siis lihtsalt kasutame <\/p>\n<p><i>\u00a0\u00a0\u00a0\u00a0mvn -Drevision=2.0.0 clean package<\/i><\/p>\n<p>Kui soovid teha v\u00e4ljaannet, siis lihtsalt nullime SNAPSHOT <\/p>\n<p><i>\u00a0\u00a0\u00a0\u00a0mvn -Dchangelist= clean package<\/i><\/p>\n<p>*\u00dclaltoodud n\u00e4ited on v\u00f5etud <noindex><a rel=\"nofollow\" href=\"https:\/\/maven.apache.org\/maven-ci-friendly.html\">artikkel<\/a><\/noindex> Maven Apache projekti veebisaidilt<\/p>\n<h4>Karm reaalsus<\/h4>\n<p>\nK\u00f5ik on h\u00e4sti ja tore, aeg on rahulolutunne kogeda, aga ei. Selgub, et installi ja deploy korral see meetod ei sobi, kuna avaldatud artefaktide kirjeldustes ei toimu asendust <i>${revision}<\/i> tema v\u00e4\u00e4rtusele ja maven ei saa aru, millest \u00fcldse jutt.<\/p>\n<p><i>&lt;parent&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0&lt;groupId&gt;org.apache&lt;\/groupId&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0&lt;artifactId&gt;apache&lt;\/artifactId&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0&lt;version&gt;${revision}&lt;\/version&gt;<br \/>\n&lt;\/parent&gt;<br \/>\n<\/i><\/p>\n<h4>Valgus tunneli l\u00f5pus<\/h4>\n<p>\nPeab otsima probleemi lahendust. Situatsiooni oleks v\u00f5inud p\u00e4\u00e4sta <noindex><a rel=\"nofollow\" href=\"https:\/\/www.mojohaus.org\/flatten-maven-plugin\/\">flatten-maven-plugin<\/a><\/noindex>. See plugin v\u00f5imaldab k\u00f5iki muutujaid pom-is, kuid samal ajal k\u00e4rbib palju muud teavet, mis on vajalik ainult ehitamisel ja ei ole vajalik avaldatud artefaktide importimiseks teistesse projektidesse. Plugin \"sirutab\" k\u00f5ik parent-child s\u00f5ltuvused, ning tulemuseks on lamedad pom-id, mis sisaldavad k\u00f5ike vajalikku. Probleem oli aga see, et k\u00e4rbiti \"liialt palju\" \u00fcleliigset, mis meid \u00fcldse ei rahuldanud. P\u00e4rast teabe uurimist selle plugina arendamise kohta selgus, et me pole ainukesed universumis, ning juba 2018. aasta augustis loodi GitHubis plugina hoidlas pull-request, mille sooviga teha v\u00f5imalus iseseisvalt m\u00e4\u00e4rata, kuidas pom.xml \"portida\". Arendajad kuulasid h\u00e4dasolijate h\u00e4\u00e4li, ja juba detsembris, uue versiooni 1.1.0 v\u00e4ljalaskmisega, ilmus flatten-maven-plugin`isse uus re\u017eiim resolveCiFriendliesOnly, mis tuli kui valatult \u2013 see j\u00e4tab pom.xml-i selliseks nagu see on, v\u00e4lja arvatud element <i>&lt;version&gt;<\/i> ja lubab <i>${revision}<\/i>, <i>${sha1}<\/i> ja <i>${changelist}<\/i>.<\/p>\n<p>Lisame plugina projekti<\/p>\n<p><i>&lt;plugins&gt;<br \/>\n\u00a0\u00a0&lt;plugin&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0&lt;groupId&gt;org.codehaus.mojo&lt;\/groupId&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0&lt;artifactId&gt;flatten-maven-plugin&lt;\/artifactId&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0&lt;version&gt;1.1.0&lt;\/version&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0&lt;configuration&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;updatePomFile&gt;true&lt;\/updatePomFile&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;flattenMode&gt;<b>resolveCiFriendliesOnly<\/b>&lt;\/flattenMode&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0&lt;\/configuration&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0&lt;executions&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;execution&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0flatten<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0process-resources<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;goals&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0flatten<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/goals&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/execution&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;execution&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0flatten.clean<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0clean<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;goals&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0clean<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/goals&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/execution&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0&lt;\/executions&gt;<br \/>\n\u00a0\u00a0&lt;\/plugin&gt;<br \/>\n&lt;\/plugins&gt;<br \/>\n<\/i><\/p>\n<p>Valmis!<\/p>\n<h4>\u00d5nnelik l\u00f5pp<\/h4>\n<p>\nN\u00fc\u00fcd, et muuta kogu projekti versioon ja teavitada sellest k\u00f5iki s\u00f5ltuvusi, peab lihtsalt redigeerima elementi &lt;<i>revision<\/i>&gt; \u00fches ainsas juurkataloogis. <i>pom.xml<\/i>Arvutisse ei j\u00f5ua sadu neid faile sama muudatusega, vaid \u00fcks. Ning kaob vajadus kasutada <i>versions-maven-plugin<\/i>.<br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/449172\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e \u043d\u0430\u0441 \u0412 1\u0421 \u043c\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 1\u0421: \u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u043d\u0430 \u0421++ \u0438 JavaScript, \u043d\u043e \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Java \u2013 \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043d\u043e\u0432\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Enterprise Development Tools \u043d\u0430 \u0431\u0430\u0437\u0435 Eclipse \u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440\u0430 \u2013 \u0421\u0438\u0441\u0442\u0435\u043c\u044b \u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u0431\u043e\u0440\u043a\u0438 Java-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c maven, \u0438 \u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24280,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32476","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e \u043d\u0430\u0441 \u0412 1\u0421 \u043c\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 1\u0421: \u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u043d\u0430 \u0421++ \u0438 JavaScript, \u043d\u043e \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Java \u2013 \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043d\u043e\u0432\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Enterprise Development Tools \u043d\u0430 \u0431\u0430\u0437\u0435 Eclipse \u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440\u0430 \u2013 \u0421\u0438\u0441\u0442\u0435\u043c\u044b \u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u0431\u043e\u0440\u043a\u0438 Java-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c maven, \u0438 \u0432\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/opyt-ispolzovaniya-flatten-maven-plugin-dlya-uproshheniya-versionirovaniya-v-maven-proektah\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041e\u043f\u044b\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f flatten-maven-plugin \u0434\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 maven-\u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e \u043d\u0430\u0441 \u0412 1\u0421 \u043c\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 1\u0421: \u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u043d\u0430 \u0421++ \u0438 JavaScript, \u043d\u043e \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Java \u2013 \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043d\u043e\u0432\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Enterprise Development Tools \u043d\u0430 \u0431\u0430\u0437\u0435 Eclipse \u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440\u0430 \u2013 \u0421\u0438\u0441\u0442\u0435\u043c\u044b \u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u0431\u043e\u0440\u043a\u0438 Java-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c maven, \u0438 \u0432\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/opyt-ispolzovaniya-flatten-maven-plugin-dlya-uproshheniya-versionirovaniya-v-maven-proektah\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:47:17+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:47:17+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Kogemus flatten-maven-plugin kasutamisest maven-projektide versioonihalduse lihtsustamiseks | ProHoster","description":"Meist 1C-s arendame mitte ainult 1C: Enterprise platvormi C++-s ja JavaScriptis, vaid ka Java rakendusi \u2013 eelk\u00f5ige uut Enterprise Development Tools arenduskeskkonda Eclipse'i baasil ja s\u00fcgavalt integreeritud s\u00f5numite s\u00fcsteemi \u2013 Interaktsioonis\u00fcsteem. Sissejuhatus Java rakenduste ehitamise s\u00fcsteemina kasutame k\u00f5ige sagedamini maven'i, ja","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/opyt-ispolzovaniya-flatten-maven-plugin-dlya-uproshheniya-versionirovaniya-v-maven-proektah","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041e\u043f\u044b\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f flatten-maven-plugin \u0434\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 maven-\u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 | ProHoster","og:description":"\u041e \u043d\u0430\u0441 \u0412 1\u0421 \u043c\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 1\u0421: \u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u043d\u0430 \u0421++ \u0438 JavaScript, \u043d\u043e \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Java \u2013 \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043d\u043e\u0432\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Enterprise Development Tools \u043d\u0430 \u0431\u0430\u0437\u0435 Eclipse \u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440\u0430 \u2013 \u0421\u0438\u0441\u0442\u0435\u043c\u044b \u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u0431\u043e\u0440\u043a\u0438 Java-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c maven, \u0438 \u0432","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/opyt-ispolzovaniya-flatten-maven-plugin-dlya-uproshheniya-versionirovaniya-v-maven-proektah","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:47:17+00:00","article:modified_time":"2019-10-31T18:47:17+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32476","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 11:03:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:58:23","updated":"2026-01-21 11:03:20"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/32476","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=32476"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/32476\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/24280"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=32476"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=32476"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=32476"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}