{"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\/da\/blog\/administrirovanie\/opyt-ispolzovaniya-flatten-maven-plugin-dlya-uproshheniya-versionirovaniya-v-maven-proektah","title":{"rendered":"Brug af flatten-maven-plugin til at forenkle versionering i maven-projekter","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h4>Om os<\/h4>\n<p>\nI 1C udvikler vi ikke kun platformen <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/269611\/\">1C: Virksomhed<\/a><\/noindex> og f\u00e5 en fungerende kommando. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/429678\/\">C++<\/a><\/noindex> og <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/315414\/\">JavaScript<\/a><\/noindex>, men ogs\u00e5 applikationer i Java \u2013 is\u00e6r det nye udviklingsmilj\u00f8 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/323508\/\">Enterprise Development Tools<\/a><\/noindex> baseret p\u00e5 Eclipse og serveren dybt integreret med platformens messenger \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/422903\/\">Interaktionssystemer<\/a><\/noindex>.<\/p>\n<h4>Introduktion<\/h4>\n<p>\nSom byggesystem for Java-applikationer bruger vi oftest maven, og i denne lille artikel vil vi gerne fort\u00e6lle om et af de problemer, vi st\u00f8dte p\u00e5 i udviklingsprocessen, og om den tilgang, der gjorde det muligt at overvinde dette problem.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Foruds\u00e6tninger og arbejdsgang<\/h4>\n<p>\nP\u00e5 grund af specifikationen af udviklingen i vores maven-projekter bruger vi en del moduler, afh\u00e6ngigheder og underprojekter. Antallet af pom-filer i et enkelt tr\u00e6 kan t\u00e6lles i dusinvis og endda hundredvis.<\/p>\n<p><img decoding=\"async\" alt=\"Brug af flatten-maven-plugin til at forenkle versionering i maven-projekter\" src=\"\/wp-content\/uploads\/2019\/04\/60eddb63fb9bd58eda2edc890e2f771f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet kunne synes, at: det er ikke s\u00e5 slemt, man opretter det \u00e9n gang og glemmer det. Hvis man skal \u00e6ndre eller tilf\u00f8je noget i alle filer samtidigt, findes der mange praktiske v\u00e6rkt\u00f8jer i redakt\u00f8rer og IDE'er. Hvad er den mest almindelige regelm\u00e6ssige \u00e6ndring af pom.xml? Vi mener, at \u00e6ndringen af versioner af projektet og afh\u00e6ngigheder. M\u00e5ske vil nogen \u00f8nske at diskutere dette, men s\u00e5dan st\u00e5r det til hos os. \u00c5rsagen er, at vi parallelt med kernen udvikler mange egne biblioteker, og for konstant reproducerbarhed af bygge- og testresultaterne finder vi ikke brugen af snapshots tilfredsstillende. Af denne grund skal vi h\u00e6ve versionsnummeret i projekterne ved hver bygge.<\/p>\n<p>Derudover opst\u00e5r der fra tid til anden behov for udvikleren at samle sin gren af et eller andet bibliotek og kontrollere dens funktionalitet p\u00e5 tv\u00e6rs af alle afh\u00e6ngigheder, hvilket kr\u00e6ver, at man manuelt \u00e6ndrer versionen i alle.<\/p>\n<h4>Den oprindelige l\u00f8sning<\/h4>\n<p>\nMed s\u00e5 hyppige og mange versionerings\u00e6ndringer \u00f8nsker man at forenkle og automatisere processen inden for CI. Her kommer en praktisk, velkendt plugin til hj\u00e6lp <i>versions-maven-plugin<\/i> \u2013 vi tilslutter det og k\u00f8rer <\/p>\n<p><i>mvn -N versions:set -DnewVersion=2.0.1 <\/i><\/p>\n<p>Maven klarer alt som det skal: den l\u00f8ber gennem hierarkiet fra top til bund, \u00e6ndrer alle versioner \u2014 ren sk\u00f8nhed! Nu er det kun tilbage at l\u00f8fte en pull-request, kollegerne vil se p\u00e5 \u00e6ndringerne, og s\u00e5 kan vi hurtigt integrere i trunk. Hurtigt? Hvordan kan det v\u00e6re? Et par hundrede. <i>pom.xml<\/i> til review, og det er ikke engang medregnet koden. Desuden er ingen beskyttet mod merge-konflikter med s\u00e5 mange \u00e6ndrede filer. Her skal det bem\u00e6rkes, at i CI-processen sker \u00e6ndringer af versioner automatisk sammen med \u00e6ndringer i funktionalitet, ikke p\u00e5 en separat m\u00e5de.<\/p>\n<h4>Nye funktioner<\/h4>\n<p>\nI et stykke tid blev vi rolige og levede med det, indtil fyrene fra <noindex><a rel=\"nofollow\" href=\"http:\/\/maven.apache.org\/\">Maven Apache Project<\/a><\/noindex> inkorporerede s\u00e5kaldte \u00bbversion replacements\u00ab (pladsholdere) i Maven fra version 3.5.0-beta-1. Essensen af disse pladsholdere er, at <i>pom.xml<\/i> i stedet for at specificere en bestemt version af projektet bruges variabler <i>${revision}<\/i>, <i>${sha1}<\/i> og <i>${changelist}<\/i>. V\u00e6rdierne for disse egenskaber er enten angivet i elementet &lt;<i>properties<\/i>&gt;, eller de kan defineres gennem et systemegenskab<\/p>\n<p><i>mvn -Drevision=2.0.0 clean package<\/i><\/p>\n<p>Systemegenskaber har forrang over v\u00e6rdier defineret i &lt;<i>properties<\/i>&gt;.<\/p>\n<p><i><b>For\u00e6lder<\/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>Afkom<\/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>Hvis du vil bygge version 2.0.0-SNAPSHOT, s\u00e5 brug bare <\/p>\n<p><i>\u00a0\u00a0\u00a0\u00a0mvn -Drevision=2.0.0 clean package<\/i><\/p>\n<p>Hvis du vil lave en release, s\u00e5 nulstiller du bare SNAPSHOT <\/p>\n<p><i>\u00a0\u00a0\u00a0\u00a0mvn -Dchangelist= clean package<\/i><\/p>\n<p>*Eksemplerne ovenfor er taget fra <noindex><a rel=\"nofollow\" href=\"https:\/\/maven.apache.org\/maven-ci-friendly.html\">artikler<\/a><\/noindex> p\u00e5 Maven Apache Project's hjemmeside<\/p>\n<h4>Den barske realitet<\/h4>\n<p>\nAlt g\u00e5r fint, og det er tid til at f\u00f8le tilfredshed, men nej. Det viser sig, at denne metode ikke virker til install og deploy, da beskrivelserne af de artefakter, der offentligg\u00f8res i repositoriet, ikke \u00e6ndres <i>${revision}<\/i> til dens v\u00e6rdi, og Maven vil ikke forst\u00e5, hvad det hele handler om.<\/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>Lys for enden af tunnelen<\/h4>\n<p>\nVi m\u00e5 finde en l\u00f8sning p\u00e5 problemet. Situationen kunne v\u00e6re reddet af <noindex><a rel=\"nofollow\" href=\"https:\/\/www.mojohaus.org\/flatten-maven-plugin\/\">flatten-maven-plugin<\/a><\/noindex>. Denne plugin g\u00f8r det muligt at aktivere alle variable i pom, men sk\u00e6rer samtidig en masse anden information ud, som kun er n\u00f8dvendig under bygningen og ikke er n\u00f8dvendig ved import af offentliggjorte artefakter til andre projekter. Derudover 'udj\u00e6vner' plugin'en alle parent-child afh\u00e6ngigheder, hvilket resulterer i flade pom'er, der inkluderer alt, hvad der er n\u00f8dvendigt. Ulempen var, at den skar for meget 'overfl\u00f8digt' ud, hvilket virkelig generede os. Efter at have unders\u00f8gt oplysningerne om udviklingen af denne plugin, viste det sig, at vi ikke var de eneste i universet, og allerede i august 2018 blev der oprettet en pull-anmodning i plugin'ens GitHub-repositorium med \u00f8nsket om at kunne definere selv, hvordan man skulle '\u00f8del\u00e6gge' pom.xml. Udviklerne lyttede til de tr\u00e6ngende, og allerede i december, med udgivelsen af den nye version 1.1.0, blev der tilf\u00f8jet en ny tilstand resolveCiFriendliesOnly til flatten-maven-plugin, som kom som kaldet - den lader pom.xml v\u00e6re som den er, bortset fra elementet <i>&lt;version&gt;<\/i> og tillader <i>${revision}<\/i>, <i>${sha1}<\/i> og <i>${changelist}<\/i>.<\/p>\n<p>Vi tilf\u00f8jer plugin'en til projektet<\/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>F\u00e6rdig!<\/p>\n<h4>Happy end<\/h4>\n<p>\nFremover skal vi for at \u00e6ndre versionen af hele projektet og informere alle afh\u00e6ngigheder kun redigere elementet &lt;<i>revision<\/i>&gt; i kun den ene rod <i>pom.xml<\/i>. Til anmeldelse kommer der ikke en hundrede eller to af disse filer med ens \u00e6ndringer, men kun \u00e9n. Og det er ikke l\u00e6ngere n\u00f8dvendigt at bruge <i>versions-maven-plugin<\/i>.<br \/>\n<br \/>Kilde: <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\/da\/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=\"da_DK\" \/>\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\/da\/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\udd47Erfaring med at bruge flatten-maven-plugin til at forenkle versionering i maven-projekter | ProHoster","description":"Om os I 1C udvikler vi ikke kun platformen 1C: Enterprise p\u00e5","canonical_url":"https:\/\/prohoster.info\/da\/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":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/32476","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=32476"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/32476\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/24280"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=32476"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=32476"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=32476"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}