{"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\/ro\/blog\/administrirovanie\/opyt-ispolzovaniya-flatten-maven-plugin-dlya-uproshheniya-versionirovaniya-v-maven-proektah","title":{"rendered":"Experien\u021ba utiliz\u0103rii flatten-maven-plugin pentru simplificarea gestion\u0103rii versiunii \u00een proiectele maven","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h4>Despre noi<\/h4>\n<p>\nLa 1C dezvolt\u0103m nu doar platforma <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/269611\/\">1C: Enterprise<\/a><\/noindex> pe <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/429678\/\">C++<\/a><\/noindex> \u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/315414\/\">JavaScript<\/a><\/noindex>, ci \u0219i aplica\u021bii pe Java \u2013 \u00een special un nou mediu de dezvoltare <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/323508\/\">Instrumente de Dezvoltare Enterprise<\/a><\/noindex> bazat pe Eclipse \u0219i serverul este profund integrat cu platforma de mesagerie \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/422903\/\">Sisteme de Interac\u021biune<\/a><\/noindex>.<\/p>\n<h4>Introducere<\/h4>\n<p>\nCa sistem de construire a aplica\u021biilor Java, folosim cel mai adesea maven, iar \u00een aceast\u0103 mic\u0103 articol dorim s\u0103 v\u0103 povestim despre una dintre problemele cu care ne-am confruntat \u00een procesul de organizare a dezvolt\u0103rii \u0219i despre abordarea care ne-a permis s\u0103 dep\u0103\u0219im aceast\u0103 problem\u0103.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Presupozi\u021bii \u0219i flux de lucru<\/h4>\n<p>\nAv\u00e2nd \u00een vedere specificul dezvolt\u0103rii \u00een proiectele noastre maven, folosim destul de multe module, dependen\u021be \u0219i proiecte secundare. Num\u0103rul de fi\u0219iere pom \u00eentr-un singur arbore poate fi estimat de zeci \u0219i chiar sute.<\/p>\n<p><img decoding=\"async\" alt=\"Experien\u021ba utiliz\u0103rii flatten-maven-plugin pentru simplificarea gestion\u0103rii versiunii \u00een proiectele maven\" src=\"\/wp-content\/uploads\/2019\/04\/60eddb63fb9bd58eda2edc890e2f771f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSe p\u0103rea c\u0103: nu este nimic grav, am creat o dat\u0103 \u0219i am uitat. Dac\u0103 este necesar s\u0103 schimb\u0103m sau s\u0103 ad\u0103ug\u0103m ceva \u00een toate fi\u0219ierele deodat\u0103, exist\u0103 o mul\u021bime de instrumente convenabile \u00een editori \u0219i IDE-uri. \u0218i care este cea mai frecvent\u0103 modificare regulat\u0103 a pom.xml? Credem c\u0103 este schimbarea versiunilor proiectului \u0219i a dependen\u021belor. Este posibil ca cineva s\u0103 doreasc\u0103 s\u0103 conteste acest lucru, dar la noi lucrurile stau exact a\u0219a. Motivul st\u0103 \u00een faptul c\u0103, pe l\u00e2ng\u0103 nucleu, dezvolt\u0103m \u00een paralel multe biblioteci proprii \u0219i pentru reproducerea constant\u0103 a rezultatelor de construire \u0219i testare, folosirea snapshot-urilor nu ni se pare o abordare convenabil\u0103. Din acest motiv, suntem nevoi\u021bi s\u0103 ridic\u0103m num\u0103rul versiunii \u00een proiecte la fiecare construire.<\/p>\n<p>De asemenea, de c\u00e2te ori dezvoltatorul are nevoie s\u0103 construiasc\u0103 ramura unei biblioteci \u0219i s\u0103 verifice func\u021bionalitatea acesteia \u00een toate dependen\u021bele, pentru care trebuie s\u0103 schimbe manual versiunea \u00een toate.<\/p>\n<h4>Solu\u021bia ini\u021bial\u0103<\/h4>\n<p>\nCu at\u00e2tea modific\u0103ri frecvente \u0219i multiple ale versiunilor, procesul \u00een cadrul CI dore\u0219te s\u0103 fie simplificat \u0219i automatizat. Aici intervine un plugin cunoscut \u0219i convenabil <i>versions-maven-plugin<\/i> \u2013 \u00eel conect\u0103m \u0219i lans\u0103m <\/p>\n<p><i>mvn -N versions:set -DnewVersion=2.0.1 <\/i><\/p>\n<p>\u0219i maven va face totul cum trebuie: va parcurge ierarhia de sus \u00een jos, va schimba toate versiunile \u2013 frumos! Acum r\u0103m\u00e2ne s\u0103 cre\u0103m pull-request-ul, colegii vor revizui modific\u0103rile \u0219i ne putem integra rapid \u00een trunk. Rapid? Nu prea. C\u00e2teva sute <i>pom.xml<\/i> la recenzare, \u0219i asta f\u0103r\u0103 a lua \u00een considerare codul. \u00cen plus, nimeni nu este sigur \u00eempotriva conflictelor de fuziune atunci c\u00e2nd num\u0103rul fi\u0219ierelor modificate este at\u00e2t de mare. Aici trebuie men\u021bionat c\u0103, \u00een procesul CI, modific\u0103rile versiunilor se realizeaz\u0103 automat \u00eempreun\u0103 cu modificarea func\u021bionalit\u0103\u021bii, \u0219i nu separat.<\/p>\n<h4>Func\u021bionalit\u0103\u021bi noi<\/h4>\n<p>\nO perioad\u0103 de timp ne-am lini\u0219tit \u0219i, \u00eemp\u0103c\u00e2ndu-ne, am tr\u0103it a\u0219a p\u00e2n\u0103 c\u00e2nd b\u0103ie\u021bii de la <noindex><a rel=\"nofollow\" href=\"http:\/\/maven.apache.org\/\">Proiectul Maven Apache<\/a><\/noindex> au inclus \u00een maven, \u00eencep\u00e2nd cu versiunea 3.5.0-beta-1, suport pentru a\u0219a-numitele \u201e\u00eenlocuitoare\u201d ale versiunilor (placeholders). Esen\u021ba acestor \u00eenlocuitoare este c\u0103 <i>pom.xml<\/i> \u00een loc de o indicare concret\u0103 a versiunii proiectului sunt folosite variabilele <i>${revision}<\/i>, <i>${sha1}<\/i> \u0219i <i>${changelist}<\/i>. Valorile acestor propriet\u0103\u021bi sunt stabilite fie \u00een elementul &lt;<i>properties<\/i>&gt;, fie pot fi definite printr-o proprietate de sistem<\/p>\n<p><i>mvn -Drevision=2.0.0 clean package<\/i><\/p>\n<p>Valorile propriet\u0103\u021bilor de sistem au prioritate fa\u021b\u0103 de valorile definite \u00een &lt;<i>properties<\/i>&gt;.<\/p>\n<p><i><b>P\u0103rinte<\/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\u00a0CI\u00a0Friendly&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>Descendent<\/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>Dac\u0103 dorim s\u0103 construim versiunea 2.0.0-SNAPSHOT, atunci pur \u0219i simplu folosim <\/p>\n<p><i>\u00a0\u00a0\u00a0\u00a0mvn -Drevision=2.0.0 clean package<\/i><\/p>\n<p>Dac\u0103 dorim s\u0103 facem un release, atunci pur \u0219i simplu reset\u0103m SNAPSHOT <\/p>\n<p><i>\u00a0\u00a0\u00a0\u00a0mvn -Dchangelist= clean package<\/i><\/p>\n<p>*Exemplele de mai sus sunt preluate de la <noindex><a rel=\"nofollow\" href=\"https:\/\/maven.apache.org\/maven-ci-friendly.html\">recomand\u0103rile sunt aplicabile coronavirusurilor \u00een general \u0219i COVID-19 \u00een particular. A\u0219adar, recomand s\u0103 desc\u0103rca\u021bi \u0219i s\u0103 printa\u021bi articolul (pentru cei interesa\u021bi de acest subiect).<\/a><\/noindex> de pe site-ul Proiectului Maven Apache<\/p>\n<h4>Realitatea dur\u0103<\/h4>\n<p>\nTotul este bine \u0219i frumos, este timpul s\u0103 experiment\u0103m un sentiment de satisfac\u021bie, dar nu. Se pare c\u0103 pentru install \u0219i deploy acest mod nu va func\u021biona, deoarece \u00een descrierile artefactelor publicate \u00een repository nu va fi \u00eenlocuit <i>${revision}<\/i> cu valoarea ei \u0219i maven ulterior nu va \u00een\u021belege despre ce este vorba.<\/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>Lumina de la cap\u0103tul tunelului<\/h4>\n<p>\nTrebuie s\u0103 c\u0103ut\u0103m o solu\u021bie la problem\u0103. Situa\u021bia ar putea fi salvat\u0103 de <noindex><a rel=\"nofollow\" href=\"https:\/\/www.mojohaus.org\/flatten-maven-plugin\/\">flatten-maven-plugin<\/a><\/noindex>. Acest plugin permite toate variabilele \u00een pom, dar totodat\u0103 elimin\u0103 o mul\u021bime de alte informa\u021bii care sunt necesare doar \u00een timpul compil\u0103rii \u0219i nu sunt necesare la importarea artefactelor publicate \u00een alte proiecte. De asemenea, pluginul \u201ealiniaz\u0103\u201d toate dependen\u021bele parent-child, iar la final rezult\u0103 pom-uri plate, care includ tot ceea ce este necesar. Inconvenientul a fost c\u0103 elimin\u0103 \u201ede prisos\u201d prea mult, ceea ce nu ne-a convenit deloc. Dup\u0103 studierea informa\u021biilor despre dezvoltarea acestui plugin, s-a dovedit c\u0103 nu suntem singurii \u00een univers, iar \u00een august 2018, \u00een depozitul pluginului de pe GitHub a fost creat un pull-request cu dorin\u021ba de a face posibil\u0103 definirea personalizat\u0103 a modului \u00een care trebuie \u201epersonalizat\u201d pom.xml. Dezvoltatorii au ascultat vocile celor dornici, \u0219i deja \u00een decembrie, cu lansarea noii versiuni 1.1.0, \u00een flatten-maven-plugin a ap\u0103rut un nou mod resolveCiFriendliesOnly, care a venit ca o m\u0103nu\u0219\u0103 \u2013 el las\u0103 pom.xml a\u0219a cum este, cu excep\u021bia elementului <i>&lt;version&gt;<\/i> \u0219i permite <i>${revision}<\/i>, <i>${sha1}<\/i> \u0219i <i>${changelist}<\/i>.<\/p>\n<p>Ad\u0103ug\u0103m pluginul \u00een proiect<\/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\u00a0&lt;id&gt;flatten&lt;\\\/id&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;phase&gt;process-resources&lt;\\\/phase&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;goals&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;goal&gt;flatten&lt;\\\/goal&gt;<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\u00a0&lt;id&gt;flatten.clean&lt;\\\/id&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;phase&gt;clean&lt;\\\/phase&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;goals&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;goal&gt;clean&lt;\\\/goal&gt;<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>Gata!<\/p>\n<h4>Sf\u00e2r\u0219it fericit<\/h4>\n<p>\nDe acum \u00eenainte, pentru a schimba versiunea \u00eentregului proiect \u0219i a informa toate dependen\u021bele despre aceasta, trebuie doar s\u0103 edit\u0103m elementul &lt;<i>revision<\/i>&gt; \u00eentr-un singur pom r\u0103d\u0103cin\u0103 <i>pom.xml<\/i>. La recenzare nu vine o sut\u0103 sau dou\u0103 de aceste fi\u0219iere cu aceea\u0219i modificare, ci unul. Ei bine, nu mai este nevoie de utilizarea <i>versions-maven-plugin<\/i>.<br \/>\n<br \/>Sursa: <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 5.0.3 - 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\" \/>\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\/ro\/blog\/administrirovanie\/opyt-ispolzovaniya-flatten-maven-plugin-dlya-uproshheniya-versionirovaniya-v-maven-proektah\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/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\udd47Experien\u021ba utiliz\u0103rii flatten-maven-plugin pentru simplificarea versiunii \u00een proiectele maven | ProHoster","description":"Despre noi \u00cen 1C dezvolt\u0103m nu doar platforma 1C: Enterprise pe","canonical_url":"https:\/\/prohoster.info\/ro\/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":"ro_RO","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","og:url":"https:\/\/prohoster.info\/ro\/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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/32476","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=32476"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/32476\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/24280"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=32476"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=32476"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=32476"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}