maven жобаларында нұсқаларды жеңілдету үшін flatten-maven-plugin пайдалану тәжірибесі

Біз туралы

1С-те біз платформаны ғана дамытпаймыз 1С: Кәсіпорын туралы C ++ и JavaScript, сонымен қатар Java қолданбалары - атап айтқанда жаңа әзірлеу ортасы Кәсіпорындарды дамыту құралдары Eclipse негізінде және платформамен терең интеграцияланған мессенджер сервері - Өзара әрекеттесу жүйелері.

кіру

Біз көбінесе maven-ті Java қосымшалары үшін құрастыру жүйесі ретінде қолданамыз және осы қысқа мақалада біз әзірлеуді ұйымдастыру процесінде кездесетін мәселелердің бірі және оны еңсеруге мүмкіндік берген тәсіл туралы сөйлескіміз келеді. мәселе.

Алғы шарттар және жұмыс процесі

Біздің maven жобаларындағы даму ерекшеліктеріне байланысты біз модульдерді, тәуелділіктерді және еншілес жобаларды қолданамыз. Бір ағаштағы pom файлдарының саны ондаған немесе тіпті жүздеген болуы мүмкін.

maven жобаларында нұсқаларды жеңілдету үшін flatten-maven-plugin пайдалану тәжірибесі

Бұл: үлкен мәселе емес, олар оны бір рет жасап, оны ұмытып кеткен сияқты. Барлық файлдарда бірден бір нәрсені өзгерту немесе қосу қажет болса, редакторлар мен IDE-де көптеген ыңғайлы құралдар бар. pom.xml файлына ең жиі қолданылатын тұрақты өзгерту қандай? Жоба нұсқалары мен тәуелділіктердегі өзгерістерге сенеміз. Мүмкін біреу мұнымен даулағысы келетін шығар, бірақ бізде дәл солай. Мұның себебі ядромен бірге біз өзіміздің көптеген кітапханаларымызды бір уақытта дамытамыз, ал құрастыру және тестілеу нәтижелерінің үнемі қайталануы үшін суретті пайдалану бізге ыңғайлы тәсіл болып көрінбейді. Осы себепті жобалардағы нұсқа нөмірін әрбір құрастыру кезінде көтеру қажет.

Сондай-ақ, әзірлеушіге мезгіл-мезгіл кітапхананың жеке филиалын құру және оның функционалдығын барлық тәуелділіктерге қарсы тексеру қажет, ол үшін олардың барлығының нұсқасын қолмен өзгертуге тура келеді.

Бастапқы шешім

Осындай жиі және бірнеше нұсқа өзгерістерімен мен CI ішіндегі процесті жеңілдеткім және автоматтандырғым келеді. Бұл жерде ыңғайлы, танымал плагин көмекке келеді. нұсқалар-maven-плагин - оны қосыңыз және іске қосыңыз

mvn -N нұсқалары:set -DnewVersion=2.0.1

және Maven барлығын қажетінше жасайды: ол барлық нұсқаларды ауыстыра отырып, иерархия бойынша жоғарыдан төменге дейін өтеді - сұлулық! Енді тек тарту сұрауын көтеру ғана қалады, әріптестер өзгерістерді қарайды және сіз магистральға тез қосыла аласыз. Тез бе? Қалай болса да. Бір-екі жүз pom.xml қарау үшін, және бұл кодты есептемейді. Сонымен қатар, өзгертілген файлдардың осындай үлкен санымен біріктіру қақтығыстарынан ешкім қауіпсіз емес. Осы жерде айта кететін жайт, CI процесінде нұсқа өзгерістері қандай да бір түрде бөлек емес, функционалдық өзгерістермен бірге автоматты түрде жүреді.

Жаңа мүмкіндіктер

Біраз уақыт біз тынышталып, өзімізді тастап, жігіттер келгенше осылай өмір сүрдік. Maven Apache жобасы 3.5.0-бета-1 нұсқасынан бастап, Maven «толтырғыштар» деп аталатын қолдауды қамтымайды. Бұл алмастырғыштардың мәні мынада pom.xml жоба нұсқасының нақты көрсеткішінің орнына айнымалылар қолданылады ${ревизия}, ${sha1} и ${changelist}. Бұл қасиеттердің мәндері элементте орнатыладықасиеттері> немесе оларды жүйе сипаты арқылы анықтауға болады

mvn -Drevision = 2.0.0 таза пакет

Жүйе сипатының мәндері анықталған мәндерден басым боладықасиеттері>.

Ата-аналар

  4.0.0
  
    org.apache
    apache
    18
  
  org.apache.maven.ci
  ci-ата-ана
  Бірінші CI Friendly
  ${revision}${sha1}${changelist}
  ...
  
    1.3.1
    -СУРЕТ
    
  


Ұрпақ

  4.0.0
  
    org.apache.maven.ci
    ci-ата-ана
    ${revision}${sha1}${changelist}
  
  org.apache.maven.ci
  ци-бала
   ...

2.0.0-SNAPSHOT нұсқасын жасағыңыз келсе, жай ғана пайдаланыңыз

    mvn -Drevision = 2.0.0 таза пакет

Егер сіз шығарылым жасағыңыз келсе, жай ғана SNAPSHOT қалпына келтіріңіз

    mvn -Dchangelist = таза пакет

*Жоғарыдағы мысалдар мына жерден алынды мақалалар Maven Apache жобасының веб-сайтында

Қатаң шындық

Барлығы жақсы және сау, қанағаттану сезімін сезінетін уақыт келді, бірақ жоқ. Бұл әдіс орнату және орналастыру үшін жұмыс істемейтіні белгілі болды, өйткені ол репозиторийде жарияланған артефактілердің сипаттамаларында ауыстырылмайды. ${ревизия} оның мағынасы туралы және Мавен енді оның не туралы екенін түсінбейді.


    org.apache
    apache
    ${ревизия}

Туннельдің соңындағы жарық

Біз мәселенің шешімін іздеуіміз керек. Жағдайды сақтап қалуға болар еді flatten-maven-плагин. Бұл плагин pom ішіндегі барлық айнымалы мәндерді шешеді, бірақ сонымен бірге жинақтау кезінде ғана қажет және жарияланған артефактілерді басқа жобаларға импорттау кезінде қажет емес көптеген басқа ақпаратты қысқартады. Плагин сонымен қатар барлық ата-анаға тәуелділіктерді «түзетеді» және нәтижесінде сізге қажет нәрсенің барлығын қамтитын тегіс пом аласыз. Қолайсыздық, ол бізге мүлдем сәйкес келмейтін тым көп «қосымшаны» жояды. Осы плагиннің дамуы туралы ақпаратты зерттегеннен кейін, біз ғаламда жалғыз емес екеніміз белгілі болды және 2018 жылдың тамызында Github-те плагин репозиторийінде оны мүмкін ету ниетімен тарту сұрауы жасалды. pom.xml қалай «бұзатынын» өз бетінше анықтау. Әзірлеушілер зардап шеккендердің даусын тыңдады және желтоқсан айында 1.1.0 жаңа нұсқасы шыққаннан кейін flatten-maven-плагинінде жаңа режим, solutionCiFriendliesOnly пайда болды, ол бұрынғыдан да қолайлы болды - ол кетеді. pom.xml элементін қоспағанда және мүмкіндік береді ${ревизия}, ${sha1} и ${changelist}.

Жобаға плагин қосу


  
    org.codehaus.mojo
    flatten-maven-плагин
    1.1.0
    
      рас
      ResolutionCiFriendliesOnly
    
    
      
        тегістеу
        процесс-ресурстар
        
          тегістеу
        
      
      
        тегістеу.таза
        таза
        
          таза
        
      
    
  

Аяқталды!

Бақытты аяқталу

Бұдан былай бүкіл жобаның нұсқасын өзгерту және бұл туралы барлық тәуелділіктерге хабарлау үшін бізге жай ғана элементті өңдеу керек.қайта қарау> тек түбірде pom.xml. Бірдей өзгерісі бар бұл файлдардың жүз немесе екі емес, біреуі шолуға келеді. Жақсы, пайдаланудың қажеті жоқ нұсқалар-maven-плагин.

Ақпарат көзі: www.habr.com

пікір қалдыру