[JAVA] Introduction à la commande jar

Chapitre 5 Archiver les artefacts

En tant que connaissance préalable pour comprendre les options des fichiers JAR Tout d'abord, je vais vous expliquer les spécifications du fichier JAR.

Structure du fichier JAR

Le fichier JAR peut contenir les éléments suivants: Pour chaque élément, supposons que vous ayez un fichier JAR appelé "sample-root.jar". スクリーンショット 2020-05-27 15.11.58.png

Un aperçu de chacun est donné ci-dessous.

INDEX.LIST Un fichier généré par l'option -i de la commande jar. Dans le fichier JAR qui contient ce fichier et dans les autres fichiers JAR dont il dépend En indexant les informations de localisation du package stocké, Il est utilisé pour accélérer le traitement du chargeur de classe.

INDEX.Échantillon de liste


JarIndex-Version: 1.0

sample-root.jar
com
com/example
com/example/app
S'il existe des fichiers JAR dépendants, ces informations suivent également...

MANIFEST.MF

Le fichier manifeste est un fichier contenant diverses méta-informations du fichier JAR. Il se compose d'une section principale et de sections individuelles, et peut être défini à l'aide de la méthode de paire «attribut: valeur». Si le même attribut est défini plusieurs fois, celui de la section individuelle est prioritaire.

#==========Section principale==========
#information sur la version(Obligatoire)
Manifest-Version: 1.0
#Attribut principal
#attribut:valeur

#Assurez-vous qu'il y a une ligne entre la section principale et les sections individuelles
# ===========Section individuelle===========
#Attribut par entrée
#attribut:valeur

Vous trouverez ci-dessous les principaux attributs pouvant être définis dans le fichier manifeste.

[Attribut principal]

--Version du manifeste: Définissez la version du fichier manifeste. Seuls les nombres entiers et les périodes peuvent être définis. --Créé par: <Créateur> Définit la version Java et le fournisseur à partir desquels ce fichier manifeste est généré. Cet attribut est automatiquement généré par l'outil jar --Version de signature: Définit la version de signature du fichier jar.

Outre,

--Attributs définis pour les applications autonomes (comme l'en-tête Main-Class) --Attributs définis pour les applets --Attributs définis pour identifier les extensions --Attributs définis pour les informations de version et de scellement des extensions et des packages

Il existe différents attributs tels que.

[Attributs par entrée]

Fichier JAR signé

sample-root.DSA et sample-root.SF sont des fichiers de signature, Cet article ne mentionne pas les outils de sécurité Java, je vais donc les omettre.

répertoire des services

Il existe une fonction appelée fournisseur de services pour utiliser la fonction du fichier JAR externe, Un répertoire qui stocke des classes concrètes qui s'interfacent avec des fichiers JAR externes. Je vais omettre l'explication cette fois, donc si vous voulez en savoir plus, veuillez vous référer à l'article suivant. Article de référence: Fonction du fournisseur de services de fichiers JAR

options de commande jar

Options de manipulation de fichiers

--c: nouvellement créé --u: mise à jour --x: Extraire les fichiers et répertoires --t: Liste du contenu de l'archive --f: spécifier le fichier JAR

Options du manifeste

--M: ne pas créer de fichier manifeste --Pour c ou u: ne pas créer de fichier manifeste --u et si le fichier manifeste existe: supprimez le fichier manifeste --m: ajoute la paire d'attributs du fichier manifeste spécifié --Si un attribut portant le même nom existe: écraser par la paire d'attributs du fichier manifeste spécifié --Si l'attribut du même nom n'existe pas: ajoutez la paire d'attributs du fichier manifeste spécifié.

Autres options

--v: affiche des informations détaillées telles que l'opération effectuée par la commande jar et la liste des fichiers stockés. --0: Générer un fichier JAR sans compression ZIP --i : crée INDEX.LIST dans le fichier JAR spécifié --- C : déplacer temporairement le répertoire À partir du répertoire actuel où la commande jar a été exécutée pour se déplacer vers le répertoire pendant le traitement Vous pouvez spécifier la cible par le chemin relatif du répertoire passé à l'argument au lieu de --- J

Une collection d'exemples de la commande jar

Créer (option c)

#Créez un fichier JAR nommé jarfile avec les ressources sous inputfiles
jar c[v0M]f jarfile [-C dir] inputfiles [-Joption]
#Créer un fichier jar avec les ressources sous les fichiers d'entrée
#Ajouter de la valeur au manifeste(Ne pas supprimer)
jar c[v0]mf manifest jarfile [-C dir] inputfiles [-Joption]

[À propos de l'ordre de description de l'option m et de l'option f] L'ordre de description de l'option m et de l'option f n'est pas décidé, Pour cmf, manifest jarfile, pour cfm, jarfile manifest, etc. Il est nécessaire de faire correspondre l'ordre des arguments suivants.

Mettre à jour (option u)

#Dans les ressources sous les fichiers d'entrée, ne refléter que la partie modifiée dans le fichier jar et mettre à jour
jar u[v0M]f jarfile [-C dir] inputfiles [-Joption]
#Seules les parties qui ont changé dans les ressources sous les fichiers d'entrée sont reflétées dans le fichier jar.
#Mettre à jour le manifeste(Ajouter ou supprimer des valeurs)
jar u[v0]mf manifest jarfile [-C dir] inputfiles [-Joption]

Extraire (option x)

#Extraire tous les répertoires et fichiers du fichier jar(Dégivrer)Faire
#Si inputfiles est spécifié, la cible spécifiée et ci-dessous seront extraites.
jar x[v]f jarfile [inputfiles] [-Joption]

Affichage de liste (option t)

#Répertoriez tous les répertoires et fichiers dans le fichier jar
#Si inputfiles est spécifié, la liste sous la cible spécifiée s'affiche.
jar t[v]f jarfile [inputfiles] [-Joption]

Indexation (option i)

#INDEX dans le fichier jar spécifié.Créer une liste
jar i jarfile [-Joption]

Courir

Voici la première structure de dossiers. スクリーンショット 2020-05-27 18.00.56.png

Créer un fichier JAR

Spécifiez le fichier JAR (f), affichez les informations détaillées (v), Créez un nouveau fichier JAR appelé java-sample.jar (c).

#Le répertoire actuel est/java-échantillon
$ jar cvf java-sample.jar .
Manifeste ajouté
.DS_Le magasin est ajouté(Entrer=6148)(En dehors=411)(93%Rétréci)
lib/Est ajouté(Entrer=0)(En dehors=0)(0%Stockée)
lib/commons-lang3-3.10.Ajouter un pot(Entrer=523372)(En dehors=481881)(7%Rétréci)
src/Est ajouté(Entrer=0)(En dehors=0)(0%Stockée)
src/com/Est ajouté(Entrer=0)(En dehors=0)(0%Stockée)
src/com/example/Est ajouté(Entrer=0)(En dehors=0)(0%Stockée)
src/com/example/app/Est ajouté(Entrer=0)(En dehors=0)(0%Stockée)
src/com/example/app/UseCommons.Ajout de Java(Entrer=647)(En dehors=286)(55%Rétréci)
src/com/example/app/StrFactory.la classe est ajoutée(Entrer=308)(En dehors=234)(24%Rétréci)
src/com/example/app/UseCommons$CommonsHelper.la classe est ajoutée(Entrer=592)(En dehors=398)(32%Rétréci)
src/com/example/app/StrFactory.Ajout de Java(Entrer=115)(En dehors=101)(12%Rétréci)
src/com/example/app/UseCommons.la classe est ajoutée(Entrer=732)(En dehors=441)(39%Rétréci)

Un java-sample.jar sera créé dans le répertoire courant. スクリーンショット 2020-05-27 18.07.51.png

Répertorier les fichiers JAR

#Le répertoire actuel est/java-échantillon
$ jar tf java-sample.jar
META-INF/
META-INF/MANIFEST.MF
.DS_Store
lib/
lib/commons-lang3-3.10.jar
src/
src/com/
src/com/example/
src/com/example/app/
src/com/example/app/UseCommons.java
src/com/example/app/StrFactory.class
src/com/example/app/UseCommons$CommonsHelper.class
src/com/example/app/StrFactory.java
src/com/example/app/UseCommons.class

Décompressez le fichier JAR

Si vous l'exécutez directement sous java-sample, les fichiers existants et les fichiers décompressés seront mélangés, donc Créez un dossier appelé décompresser et décompressez-le là.

#Le répertoire actuel est/décompresser
$ jar xf ../java-sample/java-sample.jar

Le résultat de la décompression du fichier JAR sera développé directement sous décompresser. スクリーンショット 2020-05-27 18.12.10.png

Retour à la page principale

Recommended Posts

Introduction à la commande jar
Introduction aux fichiers JAR
Introduction à la commande javadoc
Introduction à la commande java
Introduction à la commande javac
Introduction à web3j
Introduction à Micronaut 1 ~ Introduction ~
[Java] Introduction à Java
Introduction à la migration
Introduction à Java
Introduction à Doma
Ajouter un fichier au fichier jar
Introduction à Ratpack (8) - Session
commande java jar class path
Introduction à Ratpack (6) - Promesse
Introduction à Ratpack (9) --Thymeleaf
Introduction à PlayFramework 2.7 ① Présentation
Introduction à la mise en page Android
Introduction aux modèles de conception (introduction)
Introduction à la programmation pratique
Introduction à Ratpack (2) -Architecture
Introduction au style lambda
Introduction au développement de Keycloak
Introduction aux modèles de conception (Builder)
Introduction au développement d'applications Android
Introduction à Ratpack (5) --Json & Registry
Introduction à la métabase ~ Construction de l'environnement ~
Introduction à Ratpack (7) --Guice & Spring
(Installation par points) Introduction à Java8_Impression
Introduction aux modèles de conception (composite)
Introduction à Micronaut 2 ~ Test unitaire ~
Introduction à JUnit (note d'étude)
Introduction à Spring Boot ① ~ DI ~
Introduction aux modèles de conception (poids mouche)
Introduction à Spring Boot ② ~ AOP ~
Introduction à Apache Beam (2) ~ ParDo ~
Introduction à l'API EHRbase 2-REST
Commande Rbenv pour utiliser Ruby
Introduction au prototype de modèles de conception
[Java] Introduction à l'API Stream
Introduction aux modèles de conception (Iterator)
Introduction à Spring Boot, partie 1
Introduction à Ratpack (1) - Qu'est-ce que Ratpack?
Introduction aux modèles de conception (stratégie)
[Introduction aux jeux Janken (comme)] Java
Introduction à Linux Container / Docker (Partie 1)
Introduction à la pratique rapide Chapitre 5
[Introduction à Java] À propos des expressions lambda
[Introduction à Java] À propos de l'API Stream
Introduction à la programmation fonctionnelle (Java, Javascript)
Introduction aux algorithmes avec la méthode java-Shakutori
Introduction aux modèles de conception (méthode d'usine)