Απολαύστε τη χρήση του πρόσθετου flatten-maven για την απλοποίηση της έκδοσης σε έργα maven

Σχετικά με εμάς

Στο 1C αναπτύσσουμε όχι μόνο μια πλατφόρμα 1C: Επιχείρηση επί C ++ и το JavaScript, αλλά και εφαρμογές Java - ιδιαίτερα το νέο περιβάλλον ανάπτυξης Εργαλεία Ανάπτυξης Επιχειρήσεων βασίζεται στο Eclipse και σε έναν διακομιστή messenger βαθιά ενσωματωμένο στην πλατφόρμα - Συστήματα Αλληλεπίδρασης.

Είσοδος

Τις περισσότερες φορές χρησιμοποιούμε το maven ως σύστημα κατασκευής για εφαρμογές Java και σε αυτό το σύντομο άρθρο θα θέλαμε να μιλήσουμε για ένα από τα προβλήματα που έπρεπε να αντιμετωπίσουμε στη διαδικασία οργάνωσης της ανάπτυξης και για την προσέγγιση που μας επέτρεψε να το ξεπεράσουμε πρόβλημα.

Προαπαιτούμενα και ροή εργασιών

Λόγω των ιδιαιτεροτήτων της ανάπτυξης στα maven έργα μας, χρησιμοποιούμε πολλές ενότητες, εξαρτήσεις και παιδικά έργα. Ο αριθμός των αρχείων pom σε ένα δέντρο μπορεί να είναι σε δεκάδες ή και εκατοντάδες.

Απολαύστε τη χρήση του πρόσθετου flatten-maven για την απλοποίηση της έκδοσης σε έργα maven

Φαίνεται: δεν είναι σπουδαίο, το δημιούργησαν μια φορά και το ξέχασαν. Εάν πρέπει να αλλάξετε ή να προσθέσετε κάτι σε όλα τα αρχεία ταυτόχρονα, υπάρχουν πολλά βολικά εργαλεία σε προγράμματα επεξεργασίας και IDE. Ποια είναι η πιο συνηθισμένη τακτική αλλαγή στο pom.xml; Πιστεύουμε ότι αλλαγές στις εκδόσεις και τις εξαρτήσεις του έργου. Ίσως κάποιος θέλει να διαφωνήσει με αυτό, αλλά αυτή ακριβώς είναι η κατάσταση με εμάς. Ο λόγος έγκειται στο γεγονός ότι, μαζί με τον πυρήνα, αναπτύσσουμε ταυτόχρονα πολλές από τις δικές μας βιβλιοθήκες και για τη συνεχή αναπαραγωγιμότητα των αποτελεσμάτων κατασκευής και δοκιμών, η χρήση στιγμιότυπων δεν μας φαίνεται βολική προσέγγιση. Για το λόγο αυτό, είναι απαραίτητο να αυξήσετε τον αριθμό έκδοσης σε έργα με κάθε έκδοση.

Επίσης, κατά καιρούς, ένας προγραμματιστής χρειάζεται να δημιουργεί το δικό του υποκατάστημα μιας βιβλιοθήκης και να ελέγχει τη λειτουργικότητά του σε σχέση με όλες τις εξαρτήσεις, για τις οποίες πρέπει να αλλάξει χειροκίνητα την έκδοση όλων αυτών.

Αρχική λύση

Με τόσο συχνές και πολλαπλές αλλαγές εκδόσεων, θέλω να απλοποιήσω και να αυτοματοποιήσω τη διαδικασία εντός του CI. Εδώ έρχεται να σώσει ένα βολικό, γνωστό πρόσθετο. versions-maven-plugin - συνδέστε το και εκκινήστε το

mvn -N εκδόσεις:set -DnewVersion=2.0.1

και ο Maven θα κάνει τα πάντα όπως πρέπει: θα διατρέχει την ιεραρχία από πάνω προς τα κάτω, αντικαθιστώντας όλες τις εκδόσεις - ομορφιά! Τώρα το μόνο που μένει είναι να υποβάλετε ένα αίτημα έλξης, οι συνάδελφοι θα εξετάσουν τις αλλαγές και μπορείτε να συμμετάσχετε γρήγορα στον κορμό. Γρήγορα? Όπως κι αν είναι. Μια δυο εκατοντάδες pom.xml για έλεγχο, και αυτό δεν υπολογίζει τον κωδικό. Επιπλέον, κανείς δεν είναι ασφαλής από συγκρούσεις συγχώνευσης με τόσο μεγάλο αριθμό αλλαγμένων αρχείων. Θα πρέπει να σημειωθεί εδώ ότι στη διαδικασία CI, οι αλλαγές έκδοσης συμβαίνουν αυτόματα μαζί με αλλαγές στη λειτουργικότητα και όχι με κάποιο τρόπο ξεχωριστά.

Νέες δυνατότητες

Για λίγο ηρεμήσαμε και, έχοντας παραιτηθεί, ζήσαμε έτσι μέχρι τα παιδιά από Maven Apache Project Ξεκινώντας από την έκδοση 3.5.0-beta-1, το Maven δεν περιλάμβανε υποστήριξη για τα λεγόμενα "placeholders". Η ουσία αυτών των υποκατάστατων είναι ότι pom.xml αντί για συγκεκριμένη ένδειξη της έκδοσης του έργου, χρησιμοποιούνται μεταβλητές ${αναθεώρηση}, ${sha1} и ${changelist}. Οι τιμές αυτών των ιδιοτήτων καθορίζονται είτε στο στοιχείοιδιότητες>, ή μπορούν να οριστούν μέσω μιας ιδιότητας συστήματος

mvn -Drevision=2.0.0 καθαρό πακέτο

Οι τιμές των ιδιοτήτων του συστήματος υπερισχύουν των τιμών που ορίζονται στοιδιότητες>.

Ο γονέας

  4.0.0
  
    org.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 Project

Σκληρή πραγματικότητα

Όλα είναι καλά και υγιή, ήρθε η ώρα να νιώσετε μια αίσθηση ικανοποίησης, αλλά όχι. Αποδεικνύεται ότι αυτή η μέθοδος δεν θα λειτουργήσει για εγκατάσταση και ανάπτυξη, καθώς δεν θα αντικατασταθεί στις περιγραφές των τεχνουργημάτων που δημοσιεύονται στο αποθετήριο ${αναθεώρηση} σχετικά με το νόημά του και ο Maven δεν θα καταλάβει πλέον περί τίνος πρόκειται.


    org.apache
    απάχης
    ${αναθεώρηση}

Ένα φως στην άκρη ενός τούνελ

Πρέπει να αναζητήσουμε μια λύση στο πρόβλημα. Θα μπορούσε να είχε σώσει την κατάσταση flatten-maven-plugin. Αυτή η προσθήκη επιλύει όλες τις μεταβλητές στο pom, αλλά ταυτόχρονα αποκόπτει πολλές άλλες πληροφορίες που χρειάζονται μόνο κατά τη συναρμολόγηση και δεν χρειάζονται κατά την εισαγωγή δημοσιευμένων τεχνουργημάτων σε άλλα έργα. Το πρόσθετο επίσης «εξορθώνει» όλες τις εξαρτήσεις γονέα-παιδιού και ως αποτέλεσμα, λαμβάνετε ένα επίπεδο pom που περιλαμβάνει όλα όσα χρειάζεστε. Η ταλαιπωρία ήταν ότι κόβει πολύ «έξτρα», που δεν μας ταίριαζε καθόλου. Αφού μελετήσαμε τις πληροφορίες σχετικά με την ανάπτυξη αυτής της προσθήκης, αποδείχθηκε ότι δεν είμαστε οι μόνοι στο σύμπαν και τον Αύγουστο του 2018, δημιουργήθηκε ένα αίτημα έλξης στο Github στο αποθετήριο προσθηκών με την επιθυμία να γίνει δυνατό για να καθορίσουμε μόνοι μας πώς να «χαλάσουμε» το pom.xml. Οι προγραμματιστές άκουσαν τις φωνές όσων υποφέρουν και ήδη τον Δεκέμβριο, με την κυκλοφορία της νέας έκδοσης 1.1.0, εμφανίστηκε μια νέα λειτουργία, το solveCiFriendliesOnly, στο flatten-maven-plugin, το οποίο ήταν πιο κατάλληλο από ποτέ - φεύγει pom.xml ως έχει, εκτός από το στοιχείο και επιτρέπει ${αναθεώρηση}, ${sha1} и ${changelist}.

Προσθήκη πρόσθετου στο έργο


  
    org.codehaus.mojo
    flatten-maven-plugin
    1.1.0
    
      αληθής
      ZgjidhCiFriendliesOnly
    
    
      
        ισοπεδώνω
        διαδικασία-πόρων
        
          ισοπεδώνω
        
      
      
        ισοπεδώνω.καθαρίζω
        ΚΑΘΑΡΗ
        
          ΚΑΘΑΡΗ
        
      
    
  

Έγινε!

Χαρούμενο τέλος

Από εδώ και πέρα, για να αλλάξουμε την έκδοση ολόκληρου του έργου και να το γνωρίζουν όλες οι εξαρτήσεις, πρέπει απλώς να επεξεργαστούμε το στοιχείοαναθεώρηση> μόνο στη ρίζα pom.xml. Δεν φτάνουν εκατό ή δύο από αυτά τα αρχεία με την ίδια αλλαγή στην αναθεώρηση, αλλά ένα. Λοιπόν, δεν υπάρχει ανάγκη χρήσης versions-maven-plugin.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο