Comment configurer Maven pour le développement hors ligne?

Ne maven besoin d'une connexion à l'internet à un certain point pour être en mesure de l'utiliser? Ce qui signifie spécifiquement obtenir les plugins internes maven pour la compilation, le nettoyage, l'emballage, etc.?

96
demandé sur predhme 2011-08-29 21:07:15

12 réponses

vous pouvez exécuter maven en mode déconnecté 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 les choses plus fluides. C'est pour cette raison que de nombreux magasins utilisent des miroirs internes qui sont progressivement synchronisés avec les repos centraux.

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

133
répondu nsfyn55 2014-06-10 19:51:14

si vous avez un PC avec accès internet dans votre LAN, vous devez installer un dépôt Maven local.

I recommend Artifactory Open Source . C'est ce que nous utilisons dans notre organisme, il est vraiment facile à installer.

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

il Cache Les Artéfacts éloignés pour que vous n'ayez pas pour télécharger recommencer encore et encore.

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

après avoir mis en place Artifactory, vous avez juste besoin de changer settings.xml de Maven 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 parce que nous avions des problèmes d'accès à Internet dans notre machines de développement et certains artefacts téléchargé des fichiers corrompus ou n'a pas de téléchargement. Nous n'avons pas eu de problèmes depuis.

10
répondu Marcelo 2011-08-29 17:29:16

vous avez deux options pour cela:

1.) modifier les paramètres .xml ajouter dans la première étiquette

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

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

mvn -o clean install -DskipTests=true
mvn -o jetty:run
8
répondu Jyoti Prakash 2013-04-17 10:46:02

Maven a besoin des dépendances dans votre dépôt local. La façon la plus facile de les obtenir est avec l'accès internet (ou plus difficile en utilisant d'autres solutions fournies ici).

donc supposé que vous pouvez obtenir Temporairement l'accès à internet, vous pouvez vous préparer à aller hors ligne en utilisant le Maven-dependency-plugin avec son dépendance:go-offline objectif. Cela permettra de télécharger toutes les dépendances de votre projet dans votre dépôt local (bien sûr, les modifications dans les dépendances / plugins auront besoin d'un nouvel accès internet / dépôt central).

6
répondu FrVaBe 2011-08-29 20:32:47

Malheureusement dependency:go-offline n'a pas fonctionné pour moi, car il n'a pas mis en cache le tout, c'est à dire. Les fichiers POMs et autres mentionnent implicitement les dépendances.

la solution a été de spécifier un emplacement du dépôt local , soit dans settings.xml fichier avec <localRepository>...</localRepository> ou en exécutant mvn avec -Dmaven.repo.local=... paramètre. Après la construction du projet initial, tous les artefacts nécessaires devraient être mis en cache, et alors vous pouvez référencez l'emplacement du dépôt de la même manière, tout en exécutant Maven build en mode déconnecté ( mvn -o ... ).

4
répondu luka5z 2017-01-03 09:58:13

ça vous va?

http://jojovedder.blogspot.com/2009/04/running-maven-offline-using-local.html

n'oubliez pas de l'ajouter à votre dépôt plugin et de pointer l'url vers où se trouve votre dépôt.

<repositories>
    <repository>
        <id>local</id>
        <url>file://D:\mavenrepo</url>
    </repository>
</repositories>
<pluginRepositories>
    <pluginRepository>
        <id>local</id>
        <url>file://D:\mavenrepo</url>
    </pluginRepository>
</pluginRepositories>

si ce n'est pas le cas, vous pouvez avoir besoin d'exécuter un serveur local, par exemple apache, sur vos machines.

2
répondu gigadot 2011-08-29 17:22:00

ou

il suffit D'utiliser des serveurs de dépôt Maven comme Sonatype Nexus http://www.sonatype.org/nexus / or JFrog Artifactory https://www.jfrog.com/artifactory / .

après un développeur construit un projet, construit par les développeurs suivants ou Jenkins CI n'aura pas besoin d'accès internet.

Maven repository server peut également avoir des mandataires configurés pour accéder à Maven Central (ou à des dépôts publics plus nécessaires), et ils peuvent avoir cynch'ed liste des artéfacts dans les dépôts à distance.

2
répondu Paul Verest 2016-04-26 13:10:58

avant d'aller hors ligne, vous devez vous assurer que tout est dans votre repo local, qui est nécessaire tout en travaillant hors ligne. Lancer "mvn dependency:go-offline" pour le(s) projet(s)/pom (s), sur lequel vous avez l'intention de travailler, réduira les efforts pour y parvenir.

mais ce n'est généralement pas toute l'histoire, parce que la dépendance: go-offline va seulement télécharger les plugins "bare build" ( go-offline / resolve-plugins ne résout pas toutes les dépendances de plugin ). Vous devez donc trouver un moyen de télécharger les plugins deploy / test / site (et peut-être d'autres) et leurs dépendances dans votre repo.

en outre dépendance: go-offline ne télécharge pas l'artéfact poms lui-même, donc vous devez dépendance:Copiez-le si nécessaire.

parfois - comme L'a écrit MaDa-vous ne savez pas, ce dont vous aurez besoin, tout en étant hors ligne, ce qui rend assez impossible d'avoir un rapport "suffisant".

De toute façon avoir dûment rempli repo vous n'avez qu'à ajouter "true" Gourous de paramètres.xml pour passer en mode hors connexion.

ne changez pas le profil Maven (id) que vous avez utilisé pour remplir votre repo, tout en étant hors ligne. Maven reconnaît les artefacts téléchargés dans ses métadonnées avec une "identité", qui est liée à l'id du profil.

2
répondu Eike Pögel 2016-09-08 11:54:05

si vous utilisez IntelliJ, vous pouvez simplement aller à Préférences - > construction, exécution, déploiement - > outils de construction - > Maven et check/uncheck travailler hors ligne .

2
répondu heez 2017-03-16 15:29:55

répondre directement à votre question: il ne nécessite pas de connexion internet, mais l'accès à un dépôt, sur LAN ou disque local (utilisez des conseils d'autres personnes qui ont posté ici).

si votre projet n'est pas dans une phase de maturité, cela signifie que lorsque les pom sont changées assez souvent, le mode hors ligne sera très peu pratique, car vous devrez mettre à jour votre dépôt assez souvent, aussi. Sauf si vous pouvez obtenir une copie d'un dépôt qui a tout ce dont vous avez besoin, mais comment le savez-vous? Habituellement, vous démarrez un dépôt à partir de zéro et il est cloné progressivement au cours du développement (sur un ordinateur connecté à un autre dépôt). Une copie du repo1.maven.org le dépôt public pèse des centaines de gigaoctets, donc je ne recommande pas la force brute non plus.

0
répondu MaDa 2011-08-29 20:25:43

en préparation avant de travailler hors ligne mvn dependency:go-offline

0
répondu msangel 2013-07-22 14:17:46

mon expérience montre que l'option-o ne fonctionne pas correctement et que l'objectif go-offline est loin d'être suffisant pour permettre une construction complète hors ligne:

la solution que je pourrais valider inclut l'utilisation de l'option --legacy-local-repository maven plutôt que l'option -o (hors ligne) et l'utilisation du dépôt local à la place du dépôt de distribution

en plus, j'ai dû copier tous les maven-metadata-maven2_central.xml fichiers du local-repo dans la forme maven-metadata.xml attendue par maven.

voir la solution j'ai trouvé ici .

0
répondu user1767316 2017-05-23 12:18:22