IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Maven Java Discussion :

Signer toutess les dépendances jars dans une assembly


Sujet :

Maven Java

  1. #1
    Membre Expert
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Par défaut Signer toutess les dépendances jars dans une assembly
    Bonjour,

    Sur un projet d'applet, on utilise diverses librairies tiers (ex:commons-io) et au final toutes les librairies et le code de l'applet sont packagés en un seul jar.

    Le xml du pom.xml est le suivant pour le build :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    ...
    ...
    	<!-- BUILD part -->
    	<build>
     
    		<plugins>
     
    			<plugin>
    				<artifactId>maven-compiler-plugin</artifactId>
    				<configuration>
    					<source>1.5</source>
    					<target>1.5</target>
    				</configuration>
    			</plugin>
     
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-jar-plugin</artifactId>
    				<executions>
    					<execution>
    						<goals>
    							<goal>sign</goal>
    						</goals>
    					</execution>
    				</executions>
    				<configuration>
    					<keystore>pathtokeystore</keystore>
    					<alias>myalias</alias>
    					<storepass>mystorepass</storepass>
    					 <keypass>secret</keypass>						
    					<verify>true</verify>
     
    				</configuration>
    			</plugin>
     
    			<plugin>
     
    				<artifactId>maven-assembly-plugin</artifactId>
    				<configuration>
    					<descriptorRefs>
    						<descriptorRef>jar-with-dependencies</descriptorRef>
    					</descriptorRefs>
    				</configuration>
     
    				<executions>
    					<execution>
    						<id>make-assembly</id> <!-- this is used for inheritance merges -->
    						<phase>package</phase> <!-- append to the packaging phase. -->
    						<goals>
    							<goal>single</goal> <!-- goals == mojos -->
    						</goals>
    					</execution>
    				</executions>
     
    			</plugin>
     
     
     
    		</plugins>
     
    	</build>
    ...

    Maintenant comme l'applet accède à la machine locale, nous devons signer le jar final dans son entier.

    Comment faire pour que ça se passe automatiquement la phase de package ?

    Pour info : actuellement on signe le jar à la fin via la commande Java de signature (jarsigner.exe).

    Merci d'avance

  2. #2
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Tu peux utiliser maven-jar-plugin avec le goal sign


    http://maven.apache.org/plugins/mave...gin/usage.html

  3. #3
    Membre Expert
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Par défaut
    Citation Envoyé par willoi Voir le message
    Tu peux utiliser maven-jar-plugin avec le goal sign


    http://maven.apache.org/plugins/mave...gin/usage.html
    Le goal sign de maven-jar-plugin me permet uniquement de packager les sources compilées sous la forme d'un jar (ce que je fais déjà dans mon exemple, cf. plus haut la source du pom.xml), tandis que l'assembly me package ces mêmes sources compilées + les librairies jars dépendantes (ce que je veux), cette assembly arrive en toute dernière étape et juste après il me faudrait signer ce jar final contenant les sources compilées de mon prog + des librairies.

    Comment faire cela ?
    Des idées ?

    Merci d'avance

  4. #4
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Hum en fait, ce que tu veux dire c'est que tu ne peux pas faire un signjar après avoir réalisé le goal package à cause de la phase d'execution ?

    Une solution pas très élégante pourrait être de faire appel à ant via le plugin ant-run et d'executer la tache signjar de ant juste apres ta phase de packaging.

  5. #5
    Membre Expert
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Par défaut
    Citation Envoyé par willoi Voir le message
    Hum en fait, ce que tu veux dire c'est que tu ne peux pas faire un signjar après avoir réalisé le goal package à cause de la phase d'execution ?

    Une solution pas très élégante pourrait être de faire appel à ant via le plugin ant-run et d'executer la tache signjar de ant juste apres ta phase de packaging.
    Oui j'ai également pensé/vu cette idée avec Ant (en ce moment je double clique un bat qui me signe mon JAR final, je pourrais donc l'automatiser avec ANT), mais il doit bien exister une solution FULL Maven ?

    Des idées sur le sujet ?

  6. #6
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Une autre idée :
    * Faire ton make-assembly sur la phase prepare-package
    * Faire ton sign sur la phase package

  7. #7
    Membre Expert
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Par défaut
    Citation Envoyé par willoi Voir le message
    Une autre idée :
    * Faire ton make-assembly sur la phase prepare-package
    * Faire ton sign sur la phase package
    ça donnerait quoi avec le XML que j'ai posté ?

  8. #8
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Pour la partie assembly :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    				<executions>
    					<execution>
    						<id>make-assembly</id> <!-- this is used for inheritance merges -->
    						<phase>prepare-package</phase> <!-- append to the packaging phase. -->
    						<goals>
    							<goal>single</goal> <!-- goals == mojos -->
    						</goals>
    					</execution>
    				</executions>
    et pour la partie sign jar :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    				<executions>
    					<execution>
                                                   <phase>package</phase>
    						<goals>
    							<goal>sign</goal>
    						</goals>
    					</execution>
    				</executions>

  9. #9
    Membre Expert
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Par défaut
    Il semblerait que ça ne fonctionne pas, j'ai l'erreur typique concernant la sécurité pour une applet non signée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Applet starting.
    java.security.AccessControlException: access denied (java.io.FilePermission D:\Dossiers\05-1977-01001-00-01-DA-APR-00.zip read)
    	at java.security.AccessControlContext.checkPermission(Unknown Source)
    	at java.security.AccessController.checkPermission(Unknown Source)
    	at java.lang.SecurityManager.checkPermission(Unknown Source)
    	at java.lang.SecurityManager.checkRead(Unknown Source)
    	at java.io.FileInputStream.<init>(Unknown Source)
    	at java.io.FileInputStream.<init>(Unknown Source)
    	at dgt.tss.applet.ZipUtils.unzip(ZipUtils.java:89)
    	at dgt.tss.applet.TssAppletImpl.unzip(TssAppletImpl.java:257)
    	at dgt.tss.applet.TssAppletImpl.start(TssAppletImpl.java:99)
    	at sun.applet.AppletPanel.run(Unknown Source)
    	at java.lang.Thread.run(Unknown Source)
    Une autre idée ?

  10. #10
    Membre chevronné

    Inscrit en
    Septembre 2006
    Messages
    466
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 466
    Par défaut
    Bonjour,

    Citation Envoyé par elitost Voir le message
    Le goal sign de maven-jar-plugin me permet uniquement de packager les sources compilées sous la forme d'un jar (ce que je fais déjà dans mon exemple, cf. plus haut la source du pom.xml), tandis que l'assembly me package ces mêmes sources compilées + les librairies jars dépendantes (ce que je veux), cette assembly arrive en toute dernière étape et juste après il me faudrait signer ce jar final contenant les sources compilées de mon prog + des librairies.
    Pourquoi ne pas faire une nouvelle exécution du plugin jar lié à une phase après l'exécution du plugin l'assembly ?

    Rémy

  11. #11
    Membre Expert
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Par défaut
    Citation Envoyé par rseM2 Voir le message
    Bonjour,



    Pourquoi ne pas faire une nouvelle exécution du plugin jar lié à une phase après l'exécution du plugin l'assembly ?

    Rémy
    ça donnerait quoi dans la config du pom.xml ?

    Merci d'avance

  12. #12
    Membre chevronné

    Inscrit en
    Septembre 2006
    Messages
    466
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 466
    Par défaut
    Sans doute quelque chose comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <plugin>
    	<groupId>org.apache.maven.plugins</groupId>
    	<artifactId>maven-jar-plugin</artifactId>
    	<version>2.2</version>
    	<executions>
    		<execution>
    			<id>jar-sign</id>
    			<phase>à définir</phase>
    			<goals>
    			        <goal>sign</goal>
    			</goals>
    			<configuration>
    			       ...
    			</configuration>
    		</execution>
    	</executions>
    </plugin>
    Pour la phase, je te laisse regarder par rapport à ton contexte et le cycle par défaut de maven 2.

    Rémy

  13. #13
    Membre Expert
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Par défaut
    ça ne fonctionne pas.

    D'autres idées ?

  14. #14
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Quelle errreur as-tu ?

    Et avec ant tu as essayé ?

  15. #15
    Membre Expert
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Par défaut
    Citation Envoyé par willoi Voir le message
    Quelle errreur as-tu ?

    Et avec ant tu as essayé ?
    Je n'ai pas d'erreur, c'est juste que mon assembly finale n'est pas signée.

    Avec ANT, je n'aurais pas de souci je pense (je vais essayer), vu que ne sera qu'une signature de JAR, mais j'aurais souhaité que tout se fasse en Maven.

    Des idées ?

  16. #16
    Membre Expert
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Par défaut
    J'ai tenté de m'inspirer de l'exemple suivant mais sans succès :
    http://agenticarus.blogspot.com/2008...r-signing.html

    J'ai vu également l'issue suivante dans le JIRA de chez CODEHAUS :
    http://jira.codehaus.org/browse/MASSEMBLY-224

    Qqn a t'il déjà réussi en Maven seulement à signer une Assembly ?

  17. #17
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 3
    Par défaut Le plugin multijar sign
    Il y a deux ans nous avons develope et utilise le plugin multijar: http://www.jfrog.org/sites/jade-plug...gin/index.html
    Le dependency plugin faisait une extraction complete des classes, et l'on signer l'applet complete. Il y a aussi la possibilite de signer une dependance directement mais d'apres mais souvenirs, chaque dependance doit etre declaree.
    Pour l'utiliser:
    Il faut ajouter http://repo.jfrog.org/artifactory/pl...eleases-local/ a la liste des pluginRepository.
    Et pour signer les dependances la configuration est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
                <plugin>
                    <groupId>org.jfrog.jade.plugins</groupId>
                    <artifactId>jade-multijar-plugin</artifactId>
                    <version>1.4-alpha1</version>
                    <extensions>true</extensions>
                    <configuration>
                        <signConfig>
                            <alias>myalias</alias>
                            <keystore>${project.basedir}/src/main/.keystore/MyKeystore</keystore>
                            <storepass>mypassword</storepass>
                        </signConfig>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>sign</goal>
                            </goals>
                            <configuration>
                                <artifact>
                                    <!-- a transitive dependency on jdom that we wish to sign -->
                                    <groupId>jdom</groupId>
                                    <artifactId>jdom</artifactId>
                                </artifact>
                            </configuration>
                        </execution>
                    </executions>
    Une autre configuration qui utilise la possibilite de creer plusieur jars pour un meme projet: https://jade-plugins.svn.sourceforge...t/it01/pom.xml

    J'espere que ca peut aider !

  18. #18
    Membre Expert
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Par défaut
    je n'ai pas l'utilité de générer plusieurs JARs, seulement de pouvoir signer une Assembly contenant mes sources compilées + les dépendances (dans mon cas le commons-io).

    D'autres idées...

    PS : en attendant je vais voir à utiliser ANT dans Maven

  19. #19
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 3
    Par défaut
    L'example signe la dependance jdom, c'est tout. Le multijar est une fonction complementaire du plugin.

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/12/2011, 11h51
  2. Récupérer les mails Outlook dans une table Access
    Par zerrokooll dans le forum VBA Access
    Réponses: 79
    Dernier message: 07/07/2009, 14h22
  3. Regrouper plusieurs jar dans une dépendance
    Par xilay dans le forum Maven
    Réponses: 9
    Dernier message: 16/11/2007, 13h49
  4. Récupérer les données interbase dans une TStringGrid
    Par Ousse dans le forum Bases de données
    Réponses: 1
    Dernier message: 24/03/2005, 12h51
  5. Comment gérer les valeur Nulles dans une requête ?
    Par sondo dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/03/2005, 11h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo