137 votes

Comment configurer Maven pour le développement hors ligne ?

Est-ce que maven nécessite une connexion à l'internet à un moment donné pour pouvoir l'utiliser ? C'est-à-dire obtenir spécifiquement les plugins internes de maven pour la compilation, le nettoyage, l'emballage, etc ?

0 votes

Avez-vous une machine avec un accès à Internet ? Peut-être un serveur ?

2 votes

Nous le faisons, mais faire passer les choses de là à l'environnement de développement est bien, fastidieux.

190voto

nsfyn55 Points 4753

Vous pouvez exécuter maven en mode hors ligne mvn -o install . Bien sûr, tout artefact non disponible dans votre dépôt local échouera. Maven n'est pas basé sur des dépôts distribués, mais ils rendent certainement les choses plus transparentes. C'est pour cette raison que de nombreux ateliers utilisent des miroirs internes qui sont synchronisés de manière incrémentielle avec les dépôts centraux.

En outre, le mvn dependency:go-offline peut être utilisé pour s'assurer que toutes vos dépendances sont installées localement avant de commencer à travailler hors ligne.

0 votes

En même temps que cette réponse, j'ai découvert que mvn est livré avec ses plugins "de base" (c'est-à-dire le compilateur). Ainsi, avec mvn install, je peux obtenir ce dont j'ai besoin.

9 votes

Vous pouvez également envisager d'utiliser "mvn dependency:go-offline" pour garantir que tous les dépendances mentionnées dans votre pom.xml sont présentes dans votre dépôt local.

28 votes

Malheureusement mvn dependency:go-offline simplement pas attrape tout. Dans une machine virtuelle fraîche, par exemple, mon projet doit encore télécharger des choses même après avoir exécuté cet objectif. Voir aussi cette question .

11voto

Marcelo Points 6708

Si vous disposez d'un PC avec accès à Internet dans votre réseau local, vous devez installer un dépôt Maven local.

Je recommande Artifactory Open Source . C'est ce que nous utilisons dans notre organisation, il est vraiment facile à configurer.

Artifactory agit comme un proxy entre votre outil de construction (Maven, Ant, Ivy, Gradle etc.) et le monde extérieur.

Il met en cache les artefacts distants afin que vous n'ayez pas à les télécharger sans cesse.

Il bloque les demandes externes indésirables (et parfois sensibles sur le plan de la sécurité) d'artefacts internes et contrôle comment et où les artefacts sont déployés, et par qui.

Après avoir configuré Artifactory, il vous suffit de modifier les paramètres de Maven. settings.xml dans les machines de développement :

<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <mirrors>
    <mirror>
      <mirrorOf>*</mirrorOf>
      <name>repo</name>
      <url>http://maven.yourorganization.com:8081/artifactory/repo</url>
      <id>repo</id>
    </mirror>
  </mirrors>
  <profiles>
    <profile>
      <repositories>
        <repository>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
          <id>central</id>
          <name>libs-release</name>
          <url>http://maven.yourorganization.com:8081/artifactory/libs-release</url>
        </repository>
        <repository>
          <snapshots />
          <id>snapshots</id>
          <name>libs-snapshot</name>
          <url>http://maven.yourorganization.com:8081/artifactory/libs-snapshot</url>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
          <id>central</id>
          <name>plugins-release</name>
          <url>http://maven.yourorganization.com:8081/artifactory/plugins-release</url>
        </pluginRepository>
        <pluginRepository>
          <snapshots />
          <id>snapshots</id>
          <name>plugins-snapshot</name>
          <url>http://maven.yourorganization.com:8081/artifactory/plugins-snapshot</url>
        </pluginRepository>
      </pluginRepositories>
      <id>artifactory</id>
    </profile>
  </profiles>
  <activeProfiles>
    <activeProfile>artifactory</activeProfile>
  </activeProfiles>
</settings>

Nous avons utilisé cette solution car nous avions des problèmes d'accès à Internet sur nos machines de développement et certains artefacts téléchargeaient des fichiers corrompus ou ne se téléchargeaient pas du tout. Nous n'avons pas eu de problèmes depuis.

0 votes

Il n'y a pas de machine avec accès qui soit connectée au réseau local.

2 votes

Avec artifactory, vous pouvez sauvegarder l'ensemble de votre référentiel et le restaurer sur l'un des PC du réseau local.

9voto

Jyoti Prakash Points 205

Vous avez deux options pour cela :

1.) apporter des modifications dans le paramètres.xml ajoutez ceci dans la première balise

<localRepository>C:/Users/admin/.m2/repository</localRepository>

2.) utiliser l'étiquette -o pour la commande hors ligne.

mvn -o clean install -DskipTests=true
mvn -o jetty:run

6voto

FrVaBe Points 14559

Maven a besoin des dépendances dans votre dépôt local. Le moyen le plus simple de les obtenir est d'avoir un accès internet (ou plus difficile en utilisant d'autres solutions fournies ici).

Donc, en supposant que vous puissiez obtenir un accès temporaire à l'internet, vous pouvez vous préparer à vous déconnecter en utilisant la fonction maven-dependency-plugin avec son dépendance:go-offline but. Cela téléchargera toutes les dépendances de votre projet dans votre dépôt local (bien sûr, les changements dans les dépendances / plugins nécessiteront un nouvel accès à Internet / au dépôt central).

-1voto

msangel Points 1716

En préparation avant de travailler hors ligne, il suffit de lancer mvn dependency:go-offline

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X