ΠžΠΏΡ‹Ρ‚ использования flatten-maven-plugin для упрощСния вСрсионирования Π² maven-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…

О нас

Π’ 1Π‘ ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ 1Π‘: ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ Π½Π° Π‘++ ΠΈ JavaScript, Π½ΠΎ ΠΈ прилоТСния Π½Π° Java – Π² частности Π½ΠΎΠ²ΡƒΡŽ срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Enterprise Development Tools Π½Π° Π±Π°Π·Π΅ Eclipse ΠΈ сСрвСр Π³Π»ΡƒΠ±ΠΎΠΊΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ мСссСндТСра – БистСмы ВзаимодСйствия.

ВступлСниС

Π’ качСствС систСмы сборки Java-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ‡Π°Ρ‰Π΅ всСго ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ maven, ΠΈ Π² этой нСбольшой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ Π² процСссС ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΈ ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅, позволившСм эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Ρ‚ΡŒ.

ΠŸΡ€Π΅Π΄ΠΏΠΎΡΡ‹Π»ΠΊΠΈ ΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс

Π’ связи со спСцификой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² Π½Π°ΡˆΠΈΡ… maven-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ достаточно ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, зависимостСй ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ pom-Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΎΠ΄Π½ΠΎΠΌ Π΄Π΅Ρ€Π΅Π²Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΡ‡ΠΈΡΠ»ΡΡ‚ΡŒΡΡ дСсятками ΠΈ Π΄Π°ΠΆΠ΅ сотнями.

ΠžΠΏΡ‹Ρ‚ использования flatten-maven-plugin для упрощСния вСрсионирования Π² maven-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…

Казалось Π±Ρ‹: Π½ΠΈΡ‡Π΅Π³ΠΎ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠ³ΠΎ, ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· создали ΠΈ Π·Π°Π±Ρ‹Π»ΠΈ. Если Π½Π°Π΄ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²ΠΎ всСх Ρ„Π°ΠΉΠ»Π°Ρ… сразу, сущСствуСт масса ΡƒΠ΄ΠΎΠ±Π½Ρ‹Ρ… инструмСнтов Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°Ρ… ΠΈ IDE. А ΠΊΠ°ΠΊΠΎΠ΅ самоС распространённоС рСгулярноС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ pom.xml? ПолагаСм, Ρ‡Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ вСрсий ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ зависимостСй. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚ с этим ΠΏΠΎΡΠΏΠΎΡ€ΠΈΡ‚ΡŒ, Π½ΠΎ Ρƒ нас Π΄Π΅Π»ΠΎ обстоит ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° кроСтся Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ наряду с ядром ΠΌΡ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎ собствСнных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΈ для постоянной воспроизводимости Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² сборки ΠΈ тСстирования использованиС ΡΠ½ΡΠΏΡˆΠΎΡ‚ΠΎΠ² Π½Π΅ прСдставляСтся Π½Π°ΠΌ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΈ приходится ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ вСрсии Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сборкС.

Π’Π°ΠΊΠΆΠ΅ Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ свою Π²Π΅Ρ‚ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎ всСм зависимостям, для Ρ‡Π΅Π³ΠΎ Π² Π½ΠΈΡ… всСх приходится Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ.

ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅

Π‘ Ρ‚Π°ΠΊΠΈΠΌΠΈ частыми ΠΈ мноТСствСнными измСнСниями вСрсий процСсс Π² Ρ€Π°ΠΌΠΊΠ°Ρ… CI хочСтся ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π’ΡƒΡ‚ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ общСизвСстный ΠΏΠ»Π°Π³ΠΈΠ½ versions-maven-plugin β€” ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΈ запускаСм

mvn -N versions:set -DnewVersion=2.0.1

ΠΈ ΠΌΠ°Π²Π΅Π½ всС ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ сдСлаСт: ΠΏΡ€ΠΎΠ±Π΅ΠΆΠΈΡ‚ ΠΏΠΎ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ свСрху Π΄ΠΎΠ½ΠΈΠ·Ρƒ, всС вСрсии ΠΏΠΎΠ΄ΠΌΠ΅Π½ΠΈΡ‚ β€” красота! Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ pull-request, ΠΊΠΎΠ»Π»Π΅Π³ΠΈ измСнСния отсмотрят, ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹ΡΡ‚Ρ€Π΅Π½ΡŒΠΊΠΎ Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² trunk. Π‘Ρ‹ΡΡ‚Ρ€Π΅Π½ΡŒΠΊΠΎ? Как Π±Ρ‹ Π½Π΅ Ρ‚Π°ΠΊ. ΠŸΠ°Ρ€Π°-Ρ‚Ρ€ΠΎΠΉΠΊΠ° сотСн pom.xml Π½Π° Ρ€Π΅Π²ΡŒΡŽ, ΠΈ это Π½Π΅ считая ΠΊΠΎΠ΄Π°. Π’Π΄ΠΎΠ±Π°Π²ΠΎΠΊ ΠΈ ΠΎΡ‚ merge-ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ застрахован ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ большом числС ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². Π—Π΄Π΅ΡΡŒ Π½Π°Π΄ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² процСссС CI измСнСния вСрсий происходят автоматичСски вмСстС с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π° Π½Π΅ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.

НовыС возмоТности

На Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя ΠΌΡ‹ ΡƒΡΠΏΠΎΠΊΠΎΠΈΠ»ΠΈΡΡŒ ΠΈ, ΡΠΌΠΈΡ€ΠΈΠ²ΡˆΠΈΡΡŒ, Ρ‚Π°ΠΊ ΠΈ ΠΆΠΈΠ»ΠΈ, ΠΏΠΎΠΊΠ° ΠΏΠ°Ρ€Π½ΠΈ ΠΈΠ· Maven Apache Project Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Π² maven, начиная с вСрсии 3.5.0-beta-1, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Β«Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅Π»Π΅ΠΉΒ» вСрсий (placeholders). Π‘ΡƒΡ‚ΡŒ этих Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅Π»Π΅ΠΉ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² pom.xml вмСсто ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ указания вСрсии ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ${revision}, ${sha1} ΠΈ ${changelist}. Π‘Π°ΠΌΠΈ значСния этих свойств Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π»ΠΈΠ±ΠΎ Π² элСмСнтС <properties>, Π»ΠΈΠ±ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· систСмноС свойство

mvn -Drevision=2.0.0 clean package

ЗначСния систСмных свойств ΠΈΠΌΠ΅ΡŽΡ‚ прСимущСство ΠΏΠ΅Ρ€Π΅Π΄ значСниями, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ Π² <properties>.

Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ
<project>
Β Β <modelVersion>4.0.0</modelVersion>
Β Β <parent>
Β Β Β Β <groupId>org.apache</groupId>
Β Β Β Β <artifactId>apache</artifactId>
Β Β Β Β <version>18</version>
Β Β </parent>
Β Β <groupId>org.apache.maven.ci</groupId>
Β Β <artifactId>ci-parent</artifactId>
Β Β <name>FirstΒ CIΒ Friendly</name>
Β Β <version>${revision}${sha1}${changelist}</version>
  …
Β Β <properties>
Β Β Β Β <revision>1.3.1</revision>
Β Β Β Β <changelist>-SNAPSHOT</changelist>
Β Β Β Β <sha1/>
Β Β </properties>
</project>

ΠŸΠΎΡ‚ΠΎΠΌΠΎΠΊ
<project>
Β Β <modelVersion>4.0.0</modelVersion>
Β Β <parent>
Β Β Β Β <groupId>org.apache.maven.ci</groupId>
Β Β Β Β <artifactId>ci-parent</artifactId>
Β Β Β Β <version>${revision}${sha1}${changelist}</version>
Β Β </parent>
Β Β <groupId>org.apache.maven.ci</groupId>
Β Β <artifactId>ci-child</artifactId>
   …
</project>

Если хочСтся ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ 2.0.0-SNAPSHOT, Ρ‚ΠΎ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ

Β Β Β Β mvn -Drevision=2.0.0 clean package

Если хочСтся ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π΅Π»ΠΈΠ·, Ρ‚ΠΎ просто обнуляСм SNAPSHOT

Β Β Β Β mvn -Dchangelist= clean package

*ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π²Ρ‹ΡˆΠ΅ взяты ΠΈΠ· ΡΡ‚Π°Ρ‚ΡŒΠΈ Π½Π° сайтС Maven Apache Project

Буровая Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Всё Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈ Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ, ΠΏΠΎΡ€Π° ΠΈΡΠΏΡ‹Ρ‚Π°Ρ‚ΡŒ чувство удовлСтворСния, Π½ΠΎ Π½Π΅Ρ‚. ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ для install ΠΈ deploy этот способ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² описаниях ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΡŽΡ‰ΠΈΡ…ΡΡ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ² Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ${revision} Π½Π° Π΅Ρ‘ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ maven дальшС Π½Π΅ ΠΏΠΎΠΉΠΌΠ΅Ρ‚ ΠΎ Ρ‡Ρ‘ΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ€Π΅Ρ‡ΡŒ.

<parent>
Β Β Β Β <groupId>org.apache</groupId>
Β Β Β Β <artifactId>apache</artifactId>
Β Β Β Β <version>${revision}</version>
</parent>

Π‘Π²Π΅Ρ‚ Π² ΠΊΠΎΠ½Ρ†Π΅ тоннСля

Надо ΠΈΡΠΊΠ°Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π‘ΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ ΠΌΠΎΠ³ Π±Ρ‹ спасти flatten-maven-plugin. Π­Ρ‚ΠΎΡ‚ ΠΏΠ»Π°Π³ΠΈΠ½ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ всС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² pom, Π½ΠΎ Π·Π°ΠΎΠ΄Π½ΠΎ Π²Ρ‹Ρ€Π΅Π·Π°Π΅Ρ‚ массу Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, которая Π½ΡƒΠΆΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ сборкС ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½Π° ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ² Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹. Π’Π°ΠΊΠΆΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ «выпрямляСт» всС parent-child зависимости, ΠΈ Π² ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ плоскиС pom, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠ΅ Π² сСбя всё, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ. НСудобство Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π»ΠΎΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Ρ€Π΅Π·Π°Π΅Ρ‚ «лишнСго» ΠΎΠ½ слишком ΠΌΠ½ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ нас совсСм Π½Π΅ устраивало. ПослС изучСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ этого ΠΏΠ»Π°Π³ΠΈΠ½Π°, Π²Ρ‹ΡΡΠ½ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΠΎΠ΄Π½ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ Π²ΠΎ всСлСнной, ΠΈ Π΅Ρ‰Ρ‘ Π² августС 2018 Π½Π° Π³ΠΈΡ‚Ρ…Π°Π±Π΅ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π° Π±Ρ‹Π» создан pull-request с ΠΏΠΎΠΆΠ΅Π»Π°Π½ΠΈΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠ°ΠΊ Π½ΡƒΠΆΠ½ΠΎ Β«ΠΏΠΎΡ€Ρ‚ΠΈΡ‚ΡŒΒ» pom.xml. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΈΡΠ»ΡƒΡˆΠ°Π»ΠΈΡΡŒ ΠΊ голосам страТдущих, ΠΈ ΡƒΠΆΠ΅ Π² Π΄Π΅ΠΊΠ°Π±Ρ€Π΅ с Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΉ вСрсии 1.1.0 Π²ΠΎ flatten-maven-plugin появился Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ resolveCiFriendliesOnly, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠ°ΠΊ Π½ΠΈΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΡˆΡ‘Π»ΡΡ Π²ΠΏΠΎΡ€Ρƒ – ΠΎΠ½ оставляСт pom.xml ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ, ΠΊΡ€ΠΎΠΌΠ΅ элСмСнта <version> ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ${revision}, ${sha1} ΠΈ ${changelist}.

ДобавляСм ΠΏΠ»Π°Π³ΠΈΠ½ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

<plugins>
Β Β <plugin>
Β Β Β Β <groupId>org.codehaus.mojo</groupId>
Β Β Β Β <artifactId>flatten-maven-plugin</artifactId>
Β Β Β Β <version>1.1.0</version>
Β Β Β Β <configuration>
Β Β Β Β Β Β <updatePomFile>true</updatePomFile>
Β Β Β Β Β Β <flattenMode>resolveCiFriendliesOnly</flattenMode>
Β Β Β Β </configuration>
Β Β Β Β <executions>
Β Β Β Β Β Β <execution>
Β Β Β Β Β Β Β Β <id>flatten</id>
Β Β Β Β Β Β Β Β <phase>process-resources</phase>
Β Β Β Β Β Β Β Β <goals>
Β Β Β Β Β Β Β Β Β Β <goal>flatten</goal>
Β Β Β Β Β Β Β Β </goals>
Β Β Β Β Β Β </execution>
Β Β Β Β Β Β <execution>
Β Β Β Β Β Β Β Β <id>flatten.clean</id>
Β Β Β Β Β Β Β Β <phase>clean</phase>
Β Β Β Β Β Β Β Β <goals>
Β Β Β Β Β Β Β Β Β Β <goal>clean</goal>
Β Β Β Β Β Β Β Β </goals>
Β Β Β Β Β Β </execution>
Β Β Β Β </executions>
Β Β </plugin>
</plugins>

Π“ΠΎΡ‚ΠΎΠ²ΠΎ!

Happy end

ΠžΡ‚Π½Ρ‹Π½Π΅ Π½Π°ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ всСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π΄Π°Ρ‚ΡŒ Π·Π½Π°Ρ‚ΡŒ ΠΎΠ± этом всСм зависимостям, Π½Π°Π΄ΠΎ всСго-Ρ‚ΠΎ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнт <revision> Π² ΠΎΠ΄Π½ΠΎΠΌ лишь ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ pom.xml. На Ρ€Π΅Π²ΡŒΡŽ ΠΏΡ€ΠΈΠ»Π΅Ρ‚Π°Π΅Ρ‚ Π½Π΅ сотня-другая этих Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ, Π° ΠΎΠ΄ΠΈΠ½. Ну ΠΈ ΠΎΡ‚ΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² использовании versions-maven-plugin.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ