Maven sans connexion internet

Fermé
gloria5739 Messages postés 49 Date d'inscription lundi 21 septembre 2020 Statut Membre Dernière intervention 21 janvier 2022 - 15 juin 2021 à 12:21
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 16 juin 2021 à 12:17
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
A voir également:

3 réponses

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
15 juin 2021 à 13:35
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...
0
gloria5739 Messages postés 49 Date d'inscription lundi 21 septembre 2020 Statut Membre Dernière intervention 21 janvier 2022 1
15 juin 2021 à 14:47
Bonjour KX,

merci de ta réponse, j'ai fait la manip mais j'ai toujours la même erreur.......
0
gloria5739 Messages postés 49 Date d'inscription lundi 21 septembre 2020 Statut Membre Dernière intervention 21 janvier 2022 1
15 juin 2021 à 14:49
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...) ?
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
15 juin 2021 à 18:06
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)
0
gloria5739 Messages postés 49 Date d'inscription lundi 21 septembre 2020 Statut Membre Dernière intervention 21 janvier 2022 1
16 juin 2021 à 09:05
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.
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
16 juin 2021 à 10:47
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)
0
gloria5739 Messages postés 49 Date d'inscription lundi 21 septembre 2020 Statut Membre Dernière intervention 21 janvier 2022 1
16 juin 2021 à 12:10
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
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
16 juin 2021 à 12:17
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
0