Δημιουργία εκτελέσιμου JAR με εξαρτήσεις χρησιμοποιώντας το Maven

Δημιουργία εκτελέσιμου JAR με εξαρτήσεις χρησιμοποιώντας το Maven
Δημιουργία εκτελέσιμου JAR με εξαρτήσεις χρησιμοποιώντας το Maven

Συσκευασία Maven Projects σε ένα μόνο εκτελέσιμο JAR

Όταν εργάζεστε με έργα Java, είναι συχνά απαραίτητο να συσκευάζετε την εφαρμογή σας σε ένα μόνο εκτελέσιμο αρχείο JAR για εύκολη διανομή. Το Maven, ένα ισχυρό εργαλείο αυτοματισμού κατασκευής, επιτρέπει στους προγραμματιστές να συμπεριλάβουν όλες τις απαραίτητες εξαρτήσεις σε αυτό το JAR μεμονωμένης εξόδου.

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

Εντολή Περιγραφή
<plugin> Καθορίζει ένα πρόσθετο Maven που θα χρησιμοποιηθεί κατά τη διαδικασία κατασκευής. Τα πρόσθετα μπορούν να εκτελέσουν συγκεκριμένες εργασίες, όπως η μεταγλώττιση κώδικα ή η συσκευασία του έργου.
<groupId> Καθορίζει το αναγνωριστικό ομάδας για το έργο Maven, συνήθως ένα αντίστροφο όνομα τομέα.
<artifactId> Καθορίζει το αναγνωριστικό του τεχνουργήματος, που είναι το όνομα του έργου.
<version> Υποδεικνύει την τρέχουσα έκδοση του έργου.
<build> Περιέχει τη διαμόρφωση κατασκευής για το έργο, συμπεριλαμβανομένων των προσθηκών και των πόρων.
<descriptorRef> Παραπέμπει σε έναν προκαθορισμένο περιγραφέα για χρήση του Maven Assembly Plugin, όπως "jar-with-dependencies".
<mainClass> Καθορίζει την κύρια κλάση που θα εκτελεστεί όταν εκτελείται το αρχείο JAR.
<execution> Καθορίζει ένα μπλοκ εκτέλεσης μέσα σε ένα πρόσθετο, προσδιορίζοντας εργασίες που πρέπει να εκτελούνται σε διαφορετικές φάσεις κατασκευής.
mvn clean package Εντολή για καθαρισμό του έργου και συσκευασία σε ένα αρχείο JAR, συμπεριλαμβανομένων όλων των εξαρτήσεων.
java -jar target/...jar Εντολή εκτέλεσης του αρχείου JAR που δημιουργήθηκε, καθορίζοντας τη διαδρομή προς το JAR.

Δημιουργία και εκτέλεση ενός εκτελέσιμου JAR με τον Maven

Τα σενάρια που παρέχονται παραπάνω δείχνουν πώς να ρυθμίσετε ένα έργο Maven για να συσκευάσει όλες τις εξαρτήσεις του σε ένα μόνο εκτελέσιμο αρχείο JAR. Το πρώτο σενάριο είναι ένας Maven pom.xml αρχείο, το οποίο περιέχει τη διαμόρφωση του έργου. Μέσα σε αυτό το αρχείο, το <plugin> Η ετικέτα χρησιμοποιείται για τον καθορισμό του Maven Assembly Plugin. Αυτό το πρόσθετο είναι ζωτικής σημασίας για τη δημιουργία ενός εκτελέσιμου JAR που περιλαμβάνει όλες τις εξαρτήσεις. ο <descriptorRefs> Η ετικέτα μέσα στη διαμόρφωση της προσθήκης καθορίζει τη χρήση του jar-with-dependencies περιγραφέας, ο οποίος διασφαλίζει ότι όλες οι εξαρτήσεις του έργου συσκευάζονται στο τελικό αρχείο JAR. ο <mainClass> ετικέτα μέσα στο <manifest> Η ενότητα είναι απαραίτητη καθώς λέει στον Maven ποια κλάση περιέχει την κύρια μέθοδο που πρέπει να εκτελεστεί όταν εκτελείται το JAR.

ο <execution> Το μπλοκ εντός της διαμόρφωσης της προσθήκης είναι το σημείο όπου συμβαίνει η ενέργεια. Καθορίζει ότι ο στόχος της προσθήκης single θα πρέπει να εκτελεστεί κατά τη διάρκεια του package φάση του κύκλου ζωής της κατασκευής. Αυτό είναι που ενεργοποιεί τη δημιουργία του αρχείου JAR με εξαρτήσεις. Το δεύτερο σενάριο είναι μια απλή εντολή γραμμής εντολών: mvn clean package. Αυτή η εντολή καθαρίζει το έργο (καταργώντας προηγούμενα τεχνουργήματα κατασκευής), μεταγλωττίζει τον πηγαίο κώδικα, εκτελεί δοκιμές και συσκευάζει το έργο σε ένα αρχείο JAR. Το τελικό αρχείο JAR θα βρίσκεται στο target κατάλογο του έργου και ονομάστηκε σύμφωνα με το artifactId και version καθορίζεται στο pom.xml.

Δημιουργία εκτελέσιμου αρχείου JAR με εξαρτήσεις χρησιμοποιώντας το Maven

Σενάριο διαμόρφωσης Maven

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>my-app</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.3.0</version>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>com.example.MainClass</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

Εκτέλεση της εντολής Maven για συσκευασία του JAR

Οδηγίες γραμμής εντολών

mvn clean package
# This command will compile the code, run the tests, and create the JAR file
# The JAR file will include all dependencies specified in the pom.xml
# It will be located in the target directory of the project
# The final JAR file will be named my-app-1.0-SNAPSHOT-jar-with-dependencies.jar

# To run the JAR file, use the following command:
java -jar target/my-app-1.0-SNAPSHOT-jar-with-dependencies.jar
# Ensure that the mainClass specified in the pom.xml is correct
# This will start your application with all dependencies included

Προηγμένες τεχνικές Maven για εξαρτήσεις συσκευασίας

Πέρα από τη βασική διαμόρφωση για τη δημιουργία ενός εκτελέσιμου JAR με το Maven, υπάρχουν πρόσθετες τεχνικές που μπορούν να βελτιώσουν τη διαδικασία κατασκευής σας. Μια τέτοια τεχνική περιλαμβάνει τη χρήση του shade πρόσθετο αντί για το assembly συνδέω. Το Maven Shade Plugin προσφέρει πιο προηγμένες δυνατότητες για τη δημιουργία uber-JAR (JARs με εξαρτήσεις που περιλαμβάνονται). Σας επιτρέπει να μετονομάσετε πακέτα για να αποφύγετε διενέξεις διαδρομών τάξης και παρέχει καλύτερο χειρισμό για διπλότυπες κλάσεις και πόρους. Επιπλέον, προσφέρει λεπτομερή έλεγχο σχετικά με το ποιες εξαρτήσεις περιλαμβάνονται στο τελικό JAR.

Μια άλλη σημαντική πτυχή είναι η διαχείριση του μεγέθους του αρχείου JAR σας. Τα μεγάλα αρχεία JAR μπορεί να είναι δυσκίνητα και αργά στη μεταφορά ή τη φόρτωσή τους. ο maven-shade-plugin μπορεί να βοηθήσει σε αυτό επιτρέποντάς σας να αποκλείσετε περιττά αρχεία και κλάσεις, μειώνοντας έτσι το μέγεθος του τελικού JAR. Μπορείτε επίσης να διαμορφώσετε το πρόσθετο ώστε να ελαχιστοποιεί το JAR αφαιρώντας μη ουσιώδεις πληροφορίες όπως αχρησιμοποίητες κλάσεις ή περιττούς πόρους. Αυτές οι προηγμένες διαμορφώσεις μπορούν να είναι ιδιαίτερα χρήσιμες όταν εργάζεστε σε μεγάλα έργα με πολλές εξαρτήσεις.

Συνήθεις ερωτήσεις και λύσεις για Maven εκτελέσιμα JAR

  1. Πώς προσδιορίζω την κύρια κλάση στο JAR μου;
  2. Μπορείτε να καθορίσετε την κύρια κλάση χρησιμοποιώντας το <mainClass> ετικέτα εντός του <manifest> ενότητα της διαμόρφωσης της προσθήκης Maven.
  3. Πώς μπορώ να εξαιρέσω συγκεκριμένες εξαρτήσεις από το τελικό JAR;
  4. Χρησιμοποιήστε το excludes ετικέτα μέσα στη διαμόρφωση της προσθήκης για να καθορίσετε εξαρτήσεις που δεν πρέπει να περιλαμβάνονται στο τελικό JAR.
  5. Τι είναι ένα uber-JAR;
  6. Ένα uber-JAR είναι ένα αρχείο JAR που περιέχει όχι μόνο τον μεταγλωττισμένο σας κώδικα αλλά και όλες τις εξαρτήσεις του.
  7. Πώς μπορώ να αποφύγω τις διενέξεις μαθημάτων στο JAR μου;
  8. ο maven-shade-plugin σας επιτρέπει να μετονομάσετε πακέτα εντός εξαρτήσεων για την αποφυγή διενέξεων.
  9. Πώς μπορώ να χειριστώ διπλότυπες τάξεις σε εξαρτήσεις;
  10. Ρυθμίστε το maven-shade-plugin για τη διαχείριση διπλότυπων κλάσεων και πόρων, προσδιορίζοντας τον τρόπο χειρισμού των διπλότυπων στο τελικό JAR.
  11. Μπορώ να συμπεριλάβω μόνο συγκεκριμένα αρχεία από μια εξάρτηση;
  12. Ναι, μπορείτε να διαμορφώσετε το maven-assembly-plugin ή maven-shade-plugin να περιλαμβάνει μόνο συγκεκριμένα αρχεία από μια εξάρτηση.
  13. Πώς μπορώ να εκτελέσω το συσκευασμένο JAR;
  14. Χρησιμοποιήστε το java -jar εντολή ακολουθούμενη από τη διαδρομή προς το αρχείο JAR.
  15. Πώς μπορώ να επαληθεύσω τα περιεχόμενα του αρχείου JAR μου;
  16. Μπορείτε να χρησιμοποιήσετε το jar -tf εντολή για τη λίστα των περιεχομένων του αρχείου JAR.
  17. Τι γίνεται αν το αρχείο JAR μου είναι πολύ μεγάλο;
  18. Χρησιμοποιήστε το maven-shade-plugin για να αποκλείσετε περιττά αρχεία και να ελαχιστοποιήσετε το μέγεθος του JAR.

Συμπερασματικές σκέψεις για τα Maven εκτελέσιμα JAR

Η δημιουργία ενός εκτελέσιμου JAR με εξαρτήσεις χρησιμοποιώντας το Maven απλοποιεί τη διαδικασία ανάπτυξης για εφαρμογές Java. Με τη σωστή διαμόρφωση του pom.xml αρχείο και χρησιμοποιώντας πρόσθετα όπως το Maven Assembly Plugin ή το Maven Shade Plugin, οι προγραμματιστές μπορούν να συσκευάσουν όλες τις απαραίτητες εξαρτήσεις σε ένα μόνο αρχείο JAR. Αυτή η προσέγγιση διασφαλίζει ότι η εφαρμογή μπορεί να εκτελείται απρόσκοπτα σε διάφορα περιβάλλοντα, καθιστώντας τη διανομή και την εκτέλεση απλές. Ακολουθώντας αυτά τα βήματα θα σας βοηθήσουν να διαχειριστείτε αποτελεσματικά τις εξαρτήσεις του έργου σας και να δημιουργήσετε αξιόπιστα, εκτελέσιμα αρχεία JAR.