{"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\/it\/blog\/administrirovanie\/opyt-ispolzovaniya-flatten-maven-plugin-dlya-uproshheniya-versionirovaniya-v-maven-proektah","title":{"rendered":"L'esperienza dell'utilizzo di flatten-maven-plugin per semplificare la gestione delle versioni nei progetti maven","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h4>Chi siamo<\/h4>\n<p>\nIn 1C sviluppiamo non solo la piattaforma <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/269611\/\">1C: Enterprise<\/a><\/noindex> con <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/429678\/\">C++<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/315414\/\">JavaScript<\/a><\/noindex>, ma anche applicazioni in Java, in particolare un nuovo ambiente di sviluppo <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/323508\/\">Strumenti di Sviluppo Aziendale<\/a><\/noindex> basato su Eclipse e un server profondamente integrato con la piattaforma di messaggistica \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/422903\/\">Sistemi di Interazione<\/a><\/noindex>.<\/p>\n<h4>Introduzione<\/h4>\n<p>\nCome sistema di build per le applicazioni Java, utilizziamo principalmente maven e in questo breve articolo vorremmo discutere una delle sfide incontrate nel processo di organizzazione dello sviluppo e il metodo che ci ha permesso di superare questo problema.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Prerequisiti e flusso di lavoro<\/h4>\n<p>\nA causa delle specificit\u00e0 dello sviluppo nei nostri progetti maven, utilizziamo un numero significativo di moduli, dipendenze e progetti secondari. Il numero di file pom in un albero pu\u00f2 arrivare a contare decine e persino centinaia.<\/p>\n<p><img decoding=\"async\" alt=\"L&#039;esperienza dell&#039;utilizzo di flatten-maven-plugin per semplificare la gestione delle versioni nei progetti maven\" src=\"\/wp-content\/uploads\/2019\/04\/60eddb63fb9bd58eda2edc890e2f771f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSembra semplice: una volta creato si pu\u00f2 dimenticare. Se \u00e8 necessario cambiare o aggiungere qualcosa in tutti i file contemporaneamente, ci sono molti strumenti utili negli editor e IDE. Qual \u00e8 la modifica pi\u00f9 comune al file pom.xml? Riteniamo sia la modifica delle versioni di progetto e dipendenze. Forse qualcuno vorr\u00e0 contestare questa affermazione, ma per noi \u00e8 cos\u00ec. La ragione \u00e8 che, oltre al core, sviluppiamo parallelamente molte delle nostre librerie e, per garantire la riproducibilit\u00e0 costante dei risultati di compilazione e test, l'uso degli snapshot non ci sembra un approccio pratico. Per questo motivo dobbiamo aumentare il numero di versione nei progetti ad ogni build.<\/p>\n<p>Inoltre, lo sviluppatore ha di tanto in tanto la necessit\u00e0 di costruire il proprio ramo di una libreria e testarne il funzionamento con tutte le dipendenze, per questo motivo \u00e8 necessario modificare manualmente la versione in tutte.<\/p>\n<h4>Soluzione iniziale<\/h4>\n<p>\nCon queste frequenti e molteplici modifiche alle versioni, desideriamo semplificare e automatizzare il processo all'interno del CI. Qui entra in gioco un plugin di pubblico dominio molto utile. <i>versions-maven-plugin<\/i> \u2014 lo attiviamo e lo eseguiamo <\/p>\n<p><i>mvn -N versions:set -DnewVersion=2.0.1 <\/i><\/p>\n<p>e Maven far\u00e0 tutto come deve: passer\u00e0 attraverso l'gerarchia dall'alto verso il basso, sostituir\u00e0 tutte le versioni \u2014 \u00e8 fantastico! Ora resta solo da fare un pull request, i colleghi lo esamineranno e si pu\u00f2 rapidamente integrare nel trunk. Rapidamente? Non proprio. Un paio di centinaia <i>pom.xml<\/i> in revisione, e questo senza contare il codice. Inoltre, nessuno \u00e8 al riparo da conflitti di merge con un numero cos\u00ec elevato di file modificati. Vale la pena notare che durante il processo CI le modifiche delle versioni avvengono automaticamente insieme alla modifica della funzionalit\u00e0, e non separatamente.<\/p>\n<h4>Nuove funzionalit\u00e0<\/h4>\n<p>\nPer un po' siamo stati tranquilli e, accettando la situazione, cos\u00ec abbiamo vissuto, finch\u00e9 i ragazzi del <noindex><a rel=\"nofollow\" href=\"http:\/\/maven.apache.org\/\">Maven Apache Project<\/a><\/noindex> non hanno incluso in Maven, a partire dalla versione 3.5.0-beta-1, il supporto per quelli che vengono chiamati \"sostituti\" delle versioni (placeholders). L'essenza di questi sostituti \u00e8 che invece di specificare una versione concreta del progetto si utilizzano variabili <i>pom.xml<\/i> ${revision} <i>${sha1}<\/i>, <i>${changelist}<\/i> e <i>${changelist}<\/i>. I valori di queste propriet\u00e0 sono definiti o nell'elemento &lt;<i>properties<\/i>&gt;, o possono essere definiti tramite una propriet\u00e0 di sistema<\/p>\n<p><i>mvn -Drevision=2.0.0 clean package<\/i><\/p>\n<p>I valori delle propriet\u00e0 di sistema prevalgono su quelli definiti in &lt;<i>properties<\/i>&gt;.<\/p>\n<p><i><b>Genitore<\/b><br \/>\n&lt;project&gt;<br \/>\n\u00a0\u00a04.0.0<br \/>\n\u00a0\u00a0&lt;parent&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0org.apache<br \/>\n\u00a0\u00a0\u00a0\u00a0apache<br \/>\n\u00a0\u00a0\u00a0\u00a018<br \/>\n\u00a0\u00a0&lt;\/parent&gt;<br \/>\n\u00a0\u00a0org.apache.maven.ci<br \/>\n\u00a0\u00a0ci-parent<br \/>\n\u00a0\u00a0First CI Friendly<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<\/b><br \/>\n\u00a0\u00a0&lt;\/properties&gt;<br \/>\n&lt;\/project&gt;<br \/>\n<\/i><br \/>\n<i><b>Discendente<\/b><br \/>\n&lt;project&gt;<br \/>\n\u00a0\u00a04.0.0<br \/>\n\u00a0\u00a0&lt;parent&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0org.apache.maven.ci<br \/>\n\u00a0\u00a0\u00a0\u00a0ci-parent<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\u00a0org.apache.maven.ci<br \/>\n\u00a0\u00a0ci-child<br \/>\n\u00a0\u00a0\u00a0\u2026<br \/>\n&lt;\/project&gt;<br \/>\n<\/i><\/p>\n<p>Se desideri compilare la versione 2.0.0-SNAPSHOT, basta usare <\/p>\n<p><i>\u00a0\u00a0\u00a0\u00a0mvn -Drevision=2.0.0 clean package<\/i><\/p>\n<p>Se vuoi fare un rilascio, basta azzerare SNAPSHOT <\/p>\n<p><i>\u00a0\u00a0\u00a0\u00a0mvn -Dchangelist= clean package<\/i><\/p>\n<p>*Gli esempi sopra sono presi da <noindex><a rel=\"nofollow\" href=\"https:\/\/maven.apache.org\/maven-ci-friendly.html\">articolo<\/a><\/noindex> sito del progetto Maven Apache<\/p>\n<h4>La dura realt\u00e0<\/h4>\n<p>\nVa tutto bene e fantastico, \u00e8 il momento di provare un senso di soddisfazione, ma no. Si scopre che per install e deploy questo metodo non \u00e8 praticabile, poich\u00e9 nelle descrizioni degli artefatti pubblicati nel repository non sar\u00e0 sostituito <i>${sha1}<\/i> con il suo valore e Maven non capir\u00e0 di cosa si tratta.<\/p>\n<p><i>&lt;parent&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0org.apache<br \/>\n\u00a0\u00a0\u00a0\u00a0apache<br \/>\n\u00a0\u00a0\u00a0\u00a0${revision}<br \/>\n&lt;\/parent&gt;<br \/>\n<\/i><\/p>\n<h4>Luce in fondo al tunnel<\/h4>\n<p>\nDevi cercare una soluzione al problema. La situazione potrebbe essere salvata da <noindex><a rel=\"nofollow\" href=\"https:\/\/www.mojohaus.org\/flatten-maven-plugin\/\">flatten-maven-plugin<\/a><\/noindex>. Questo plugin consente di risolvere tutte le variabili nel pom, ma allo stesso tempo elimina un sacco di altre informazioni che sono necessarie solo durante la build e non servono per importare artefatti pubblicati in altri progetti. Inoltre, il plugin \"appiattisce\" tutte le dipendenze parent-child, e alla fine si ottengono pom piatti che includono tutto il necessario. Il problema era che elimina troppo \"superfluo\", il che non ci soddisfava affatto. Dopo aver studiato le informazioni sullo sviluppo di questo plugin, abbiamo scoperto che non eravamo gli unici nell'universo, e gi\u00e0 nell'agosto 2018 nel repository del plugin su GitHub era stata creata una pull request con la richiesta di rendere possibile definire autonomamente come \"rottamare\" pom.xml. Gli sviluppatori hanno ascoltato le voci dei bisognosi, e gi\u00e0 a dicembre, con il rilascio della nuova versione 1.1.0, nel flatten-maven-plugin \u00e8 stata introdotta una nuova modalit\u00e0 resolveCiFriendliesOnly, che \u00e8 arrivata come una manna dal cielo - lascia pom.xml com'\u00e8, tranne per l'elemento <i>&lt;version&gt;<\/i> e consente <i>${sha1}<\/i>, <i>${changelist}<\/i> e <i>${changelist}<\/i>.<\/p>\n<p>Aggiungiamo il plugin al progetto<\/p>\n<p><i>&lt;plugins&gt;<br \/>\n\u00a0\u00a0&lt;plugin&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0org.codehaus.mojo<br \/>\n\u00a0\u00a0\u00a0\u00a0flatten-maven-plugin<br \/>\n\u00a0\u00a0\u00a0\u00a01.1.0<br \/>\n\u00a0\u00a0\u00a0\u00a0&lt;configuration&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0true<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>Fatto!<\/p>\n<h4>Felice fine<\/h4>\n<p>\nDa ora in poi, per modificare la versione dell'intero progetto e informare tutte le dipendenze, basta modificare l'elemento &lt;<i>revision<\/i>&gt; in un solo file radice. <i>pom.xml<\/i>Non arriveranno un centinaio di questi file con la stessa modifica, ma uno solo. Inoltre, non sar\u00e0 pi\u00f9 necessario utilizzare <i>versions-maven-plugin<\/i>.<br \/>\n<br \/>Fonte: <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\/it\/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=\"it_IT\" \/>\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\/it\/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\udd47Esperienza nell'uso di flatten-maven-plugin per semplificare la versioning nei progetti Maven | ProHoster","description":"Chi siamo In 1C sviluppiamo non solo la piattaforma 1C: Enterprise in C++ e JavaScript, ma anche applicazioni in Java \u2013 in particolare un nuovo ambiente di sviluppo Enterprise Development Tools basato su Eclipse e un server di messaggistica profondamente integrato con la piattaforma \u2013 Sistema di Interazione. Introduzione Come sistema di build per applicazioni Java, utilizziamo pi\u00f9 frequentemente Maven, e","canonical_url":"https:\/\/prohoster.info\/it\/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":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/32476","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=32476"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/32476\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/24280"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=32476"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=32476"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=32476"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}