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

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 αρχείο, το οποίο περιέχει τη διαμόρφωση του έργου. Μέσα σε αυτό το αρχείο, το Η ετικέτα χρησιμοποιείται για τον καθορισμό του Maven Assembly Plugin. Αυτό το πρόσθετο είναι ζωτικής σημασίας για τη δημιουργία ενός εκτελέσιμου JAR που περιλαμβάνει όλες τις εξαρτήσεις. ο Η ετικέτα μέσα στη διαμόρφωση της προσθήκης καθορίζει τη χρήση του jar-with-dependencies περιγραφέας, ο οποίος διασφαλίζει ότι όλες οι εξαρτήσεις του έργου συσκευάζονται στο τελικό αρχείο JAR. ο ετικέτα μέσα στο Η ενότητα είναι απαραίτητη καθώς λέει στον Maven ποια κλάση περιέχει την κύρια μέθοδο που πρέπει να εκτελεστεί όταν εκτελείται το JAR.

ο Το μπλοκ εντός της διαμόρφωσης της προσθήκης είναι το σημείο όπου συμβαίνει η ενέργεια. Καθορίζει ότι ο στόχος της προσθήκης θα πρέπει να εκτελεστεί κατά τη διάρκεια του φάση του κύκλου ζωής της κατασκευής. Αυτό είναι που ενεργοποιεί τη δημιουργία του αρχείου JAR με εξαρτήσεις. Το δεύτερο σενάριο είναι μια απλή εντολή γραμμής εντολών: mvn clean package. Αυτή η εντολή καθαρίζει το έργο (καταργώντας προηγούμενα τεχνουργήματα κατασκευής), μεταγλωττίζει τον πηγαίο κώδικα, εκτελεί δοκιμές και συσκευάζει το έργο σε ένα αρχείο JAR. Το τελικό αρχείο JAR θα βρίσκεται στο κατάλογο του έργου και ονομάστηκε σύμφωνα με το και καθορίζεται στο 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, υπάρχουν πρόσθετες τεχνικές που μπορούν να βελτιώσουν τη διαδικασία κατασκευής σας. Μια τέτοια τεχνική περιλαμβάνει τη χρήση του πρόσθετο αντί για το συνδέω. Το Maven Shade Plugin προσφέρει πιο προηγμένες δυνατότητες για τη δημιουργία uber-JAR (JARs με εξαρτήσεις που περιλαμβάνονται). Σας επιτρέπει να μετονομάσετε πακέτα για να αποφύγετε διενέξεις διαδρομών τάξης και παρέχει καλύτερο χειρισμό για διπλότυπες κλάσεις και πόρους. Επιπλέον, προσφέρει λεπτομερή έλεγχο σχετικά με το ποιες εξαρτήσεις περιλαμβάνονται στο τελικό JAR.

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

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

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

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