web-dev-qa-db-fra.com

Créer un référentiel Maven local

Je veux créer un référentiel Maven local. J'ai fait les étapes suivantes:

  1. Maven installé dans Eclipse 
  2. Création d'un dossier localrepository sur le serveur Apache accessible via http: // <my-domain>/localrepository 
  3. Dans mon projet pom.xml, j'ai fourni

    <repositories>
        <repository>
            <id>repository</id>
            <url>http://<my-domain>/localMavenRepository</url>
        </repository>
    </repositories>
    

Mais cela ne résout pas les fichiers jar qui se trouvent sur http: // <my-domain>/localMavenRepository

Est-il nécessaire de fournir un référentiel?

47
pbhle

Vous ne pouvez pas créer un référentiel privé de cette façon. Consultez cet article: http://www.theserverside.com/news/1364121/Setting-Up-a-Maven-Repository .

J'utilise Artifactory Open Source version.

32
Stanley

Je dois m'opposer à Stanley, ça devrait marcher comme ça. Alors que l'article sur les liens Stanley mène à des configurations bien plus puissantes, si vous avez besoin d'un référentiel simple très basique, alors un Apache avec la configuration par défaut peut fournir un référentiel.

Pour configurer un référentiel interne, vous devez simplement disposer d'un emplacement, puis commencer à y copier les artefacts requis en utilisant la même disposition que dans un référentiel distant tel que repo.maven.Apache.org. La source

La clé est que vous avez besoin de la structure de dossiers correcte et que la documentation ne le mentionne pas de manière aussi explicite ... C'est la même structure qu'un référentiel local.

Ajoutez un fichier à votre référentiel comme ceci:

mvn install:install-file -Dfile=YOUR_JAR.jar -DgroupId=YOUR_GROUP_ID -DartifactId=YOUR_ARTIFACT_ID -Dversion=YOUR_VERSION -Dpackaging=jar -DlocalRepositoryPath=/var/www/html/mavenRepository

En supposant que la racine du document pour example.com sur votre Apache soit /var/www/html/, ce qui ferait que "YOUR_JAR.jar" soit disponible pour maven sur un référentiel configuré avec <url>http://example.com/mavenRepository</url>

45
yankee

Une autre façon consiste à inclure votre fichier jar dans votre référentiel local maven.

Voir ici pour un exemple simple.

1
Zouzias

Si maven ne crée pas Local Repository, c'est-à-dire le dossier .m2/repository, essayez l'étape ci-dessous.

Dans votre suite Eclipse\Spring, cliquez sur Fenêtre-> Préférences-> Maven-> Paramètres utilisateur-> Cliquez sur Restaurer les valeurs par défaut-> Appliquer-> Appliquer et fermez.

0
LOKESH S

Oui, vous pouvez! Pour un référentiel simple qui ne publie/récupère que des artefacts, vous pouvez utiliser nginx. 

  1. Assurez-vous que nginx a activé le module http dav , cela devrait, mais néanmoins le vérifier.

  2. Configurez le module nginx http dav :

    Sous Windows: d:\serveurs\nginx\nginx.conf

    location / {
        # maven repository
        dav_methods  PUT DELETE MKCOL COPY MOVE;
        create_full_put_path  on;
        dav_access  user:rw group:rw all:r;
    }
    

    Sous Linux (Ubuntu): / etc/nginx/sites-available/default

    location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            # try_files $uri $uri/ =404;  # IMPORTANT comment this
            dav_methods  PUT DELETE MKCOL COPY MOVE;
            create_full_put_path  on;
            dav_access  user:rw group:rw all:r;
    }
    

    N'oubliez pas de donner des autorisations sur le répertoire dans lequel le dépôt sera situé:

    Sudo chmod +777 /var/www/html/repository

  3. Dans le pom.xml de votre projet, ajoutez la configuration correspondante:

    Récupérer des artefacts:

    <repositories>
        <repository>
            <id>repository</id>
            <url>http://<your.ip.or.hostname>/repository</url>
        </repository>
    </repositories>
    

    Publier des artefacts:

    <build>
        <extensions>
            <extension>
                <groupId>org.Apache.maven.wagon</groupId>
                <artifactId>wagon-http</artifactId>
                <version>3.2.0</version>
            </extension>
        </extensions>
    </build>
    <distributionManagement>
        <repository>
            <id>repository</id>
            <url>http://<your.ip.or.hostname>/repository</url>
        </repository>
    </distributionManagement>
    
  4. Pour publier des artefacts, utilisez mvn deploy. Pour récupérer des artefacts, Maven le fera automatiquement.

Et là vous avez un simple repo Maven.

0
lmiguelmh