Maven sans connexion internet

Signaler
Messages postés
44
Date d'inscription
lundi 21 septembre 2020
Statut
Membre
Dernière intervention
3 septembre 2021
-
Messages postés
16394
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
18 septembre 2021
-
Bonjour,

J'ai créé un projet maven sous eclipse dans le but de crée rune batterie de test auto ave Serenity bdd. J'ai crée un petit test sur mon premier PC qui possède une connexion, et ça marche.

Mtn il faudrait que je continu le developement sur une VM avec zero connexion internet. J'ai commencé par intégrer les .jar dans le projet mais j'ai l'erreur suivante quand je run :

Plugin org.apache.maven.plugins:maven-resources-plugin:2.6 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:2.6: Could not transfer artifact org.apache.maven.plugins:maven-resources-plugin:pom:2.6 from/to nexus (https://nexus.assu.socgen/nexus/content/groups/public/): PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target -> [Help 1]

Et lorsque que je regarde mon pom.xml j'ai des erreurs aussi :


<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>ics</groupId>
  <artifactId>test_ics</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>test_ics</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    
    <dependency>
    <groupId>net.serenity-bdd</groupId>
    <artifactId>serenity-core</artifactId>
    <version>1.2.5-rc.11</version>
</dependency>

<dependency>
    <groupId>net.serenity-bdd</groupId>
    <artifactId>serenity-junit</artifactId>
    <version>1.2.5-rc.11</version>
    
</dependency>

<dependency>
    <groupId>org.openqa.selenium.webdriver</groupId>
    <artifactId>webdriver-ie</artifactId>
    <version>0.6.685</version>
</dependency>

<dependency>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
</dependency>

  </dependencies>


<build>
	<plugins>
		<plugin>
    <groupId>net.serenity-bdd.maven.plugins</groupId>
    <artifactId>serenity-maven-plugin</artifactId>
    <version>1.2.5-rc.6</version>
    <executions>
        <execution>
            <id>serenity-reports</id>
            <phase>post-integration-test</phase>
            <goals>
                <goal>aggregate</goal>
            </goals>
        </execution>
    </executions>
		</plugin>
		
		<plugin>
              <artifactId>maven-resources-plugin</artifactId>
              <version>2.6</version>
            </plugin>           
		
	</plugins>
</build>



 
</project>





J'ai ca de souligner :


Voila si quelqu'un a une idée

3 réponses

Messages postés
16394
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
18 septembre 2021
2 877
Bonjour,

À défaut de pouvoir te connecter à internet, il faut que tu ais toutes les dépendances en local.

Sur l'ordinateur avec internet : supprimes ton .m2 local, ou reconfigures le pour pointer vers un emplacement vide et reconstruis tout ton projet (mvn clean install) pour avoir dans le .m2 toutes les dépendances nécessaires au projet (et uniquement celles-ci). Si tu as besoin d'exécuter des commandes spécifiques à ton projet (mvn serenity:check), assures toi de les exécuter aussi pour récupérer leurs dépendances, sinon elles ne pourront pas fonctionner une fois hors ligne.

Sur l'ordinateur sans internet : copies l'intégralité du .m2 obtenu et configures Maven pour pointer dessus. Puis il faut rajouter l'option -o (offline) à chaque commande (mvn clean install -o, mvn serenity:check -o)

Évidemment si ensuite tu rajoutes une dépendance dans ton pom ou que tu veux exécuter une commande que tu n'avais pas anticipé, il faudra recommencer...
Messages postés
44
Date d'inscription
lundi 21 septembre 2020
Statut
Membre
Dernière intervention
3 septembre 2021
1
Bonjour KX,

merci de ta réponse, j'ai fait la manip mais j'ai toujours la même erreur.......
Messages postés
44
Date d'inscription
lundi 21 septembre 2020
Statut
Membre
Dernière intervention
3 septembre 2021
1
Est ce qu'il est nécessaire d'ecrire les dependances dans le pom et d'inserer les jar un par un au projet (en faisant build path etc...) ?
Messages postés
16394
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
18 septembre 2021
2 877
Je reprends différents points :

"j'ai toujours la même erreur"
Analysons l'erreur :
"Could not transfer artifact org.apache.maven.plugins:maven-resources-plugin:pom:2.6 from/to nexus"
Ici ce n'est pas une dépendance, mais un plugin, donc il ne suffit pas seulement de rajouter les dépendances une à une, il faut aussi rajouter les plugins, c'est ce qui permet à Maven d'interpréter le contenu du pom.xml, de lancer les différentes commandes mvn, d'où l'importance d'exécuter ces différentes commandes sur l'ordinateur qui a internet pour télécharger tout ce qui est nécessaire à leur exécution.

"https://nexus.assu.socgen/nexus/content/groups/public/: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException"
Ici, cela signifie que tu n'essaies pas de télécharger les dépendances depuis le Maven central, mais depuis un Nexus d'entreprise, dont l'adresse en HTTPS requiert un certificat valide. Donc soit il faut utiliser un JDK préconfiguré par l'entreprise, soit se procurer ce certificat auprès de l'entreprise et configurer le JDK.
L'équipe de l'entreprise qui gère le Nexus saura t'aiguiller le cas échéant.

"Est ce qu'il est nécessaire d'ecrire les dependances dans le pom"
Les dépendances dans le pom, oui bien sûr, sinon Maven ne saura pas qu'il faut les ajouter et ton programme ne compilerai pas.

"et d'inserer les jar un par un au projet (en faisant build path etc...) ?"
D'une part, non, si c'est un projet Maven, le path est construit par Maven (à condition qu'il ait réussi à trouver le plugin correspondant...)
D'autre part ici tu parles d'un IDE (Eclipse, IntelliJ...) qui a lui même besoin d'un certain nombre de dépendances Maven en plus de celles utilisées par les commandes mvn manuelles, il faudrait donc s'assurer d'avoir également téléchargé ces dépendances sur l'ordinateur avec internet pour que l'IDE sur l'ordinateur sans internet arrive à les retrouver dans le .m2 copié (attention à bien configurer l'IDE pour qu'il utilise le bon .m2 qui peut être différent de celui utilisé par défaut via les commandes mvn)
Messages postés
44
Date d'inscription
lundi 21 septembre 2020
Statut
Membre
Dernière intervention
3 septembre 2021
1
D'accord, c'est beaucoup plus claire comme ça.

J'aurai une dernière question, si il y a une différence entre dépendance et plugin, comment insert-on des plugins alors ?

Merci beaucoup en tout cas.
Messages postés
16394
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
18 septembre 2021
2 877
Des plugins tu en as déjà inséré dans ton pom (serenity-maven-plugin...), mais ce sont des jar dans le .m2 comme les autres, avec éventuellement des dépendances, etc. La seule différence c'est qu'au lieu d'avoir une méthode main ils exécutent des goal Maven (grâce à un fichier plugin.xml dans le jar).

Donc si tu copies le .m2 après avoir exécuté les différentes commandes Maven il y aura également les jar des plugins nécessaires à l'exécution de ces commandes.
Tu peux regarder par exemple dans le répertoire org/apache/maven/plugins de ton .m2, il devrait notamment y avoir maven-clean-plugin (mvn clean) et maven-install-plugin (mvn install)
Messages postés
44
Date d'inscription
lundi 21 septembre 2020
Statut
Membre
Dernière intervention
3 septembre 2021
1
Top merci, je testerai ça, mais avant de te laisser tranquille, j'ai une dernière question (vraiment la dernière) j'ai resussi à recupérer le certificat nexus, mais est ce que je dois l'installer ? comment montrer a maven le chemin du certificat etc ?

Merci mille fois encore
Messages postés
16394
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
18 septembre 2021
2 877
Maven ne fait que déléguer à Java. Si tu fais un mvn --version par exemple il t'indiquera la version du JDK qu'il utilise. C'est sur ce JDK qu'il faut installer le certificat.

Voir https://www.baeldung.com/java-import-cer-certificate-into-keystore