Question

Je sais que je peux ajouter des référentiels maven pour récupérer les dépendances dans ~ / .m2 / settings.xml. Mais est-il possible d’ajouter un référentiel à l’aide de la ligne de commande, par exemple:

mvn install -Dmaven.repository=http://example.com/maven2

La raison pour laquelle je souhaite procéder est parce que j'utilise un outil d'intégration continue dans lequel je contrôle entièrement les options de ligne de commande utilisées pour appeler maven, mais en gérant le fichier settings.xml pour l'utilisateur qui exécute l'outil d'intégration. est un peu embêtant.

Était-ce utile?

La solution

Vous pouvez le faire, mais vous feriez probablement mieux de le faire dans le POM, comme d'autres l'ont dit.

Sur la ligne de commande, vous pouvez spécifier une propriété pour le référentiel local et un autre référentiel pour les référentiels distants. Le référentiel distant aura tous les paramètres par défaut si

L'exemple ci-dessous spécifie deux référentiels distants et un référentiel local personnalisé.

mvn package -Dmaven.repo.remote=http://www.ibiblio.org/maven/,http://myrepo 
  -Dmaven.repo.local="c:\test\repo"

Autres conseils

L'un des objectifs du modèle POM (Project Object Model) de Mav not est de capturer toutes les informations nécessaires à la reproduction fiable d'un artefact. Il est donc fortement déconseillé de définir des paramètres ayant un impact sur la création de l'artefact.

Pour atteindre votre objectif, vous pouvez archiver votre fichier settings.xml de niveau utilisateur avec chaque projet et utiliser l'option -s (ou --settings) pour le transmettre à la construction.

Je ne sais pas si vous pouvez le faire en utilisant la ligne de commande. Vous pouvez par contre ajouter des référentiels dans le pom.xml comme dans l'exemple suivant. Avec cette approche, il n’est pas nécessaire de modifier le fichier ~ / .m2 / settings.xml .

    <?xml version="1.0" encoding="UTF-8"?>
    <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">
    ...
    <repositories>
            <repository>
                <id>MavenCentral</id>
                <name>Maven repository</name>
                <url>http://repo1.maven.org/maven2</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </repository>
...
            <repository>
                <id>Codehaus Snapshots</id>
                <url>http://snapshots.repository.codehaus.org/</url>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
                <releases>
                    <enabled>false</enabled>
                </releases>
            </repository>
        </repositories>

    ...

        <pluginRepositories>
            <pluginRepository>
                <id>apache.snapshots</id>
                <name>Apache Snapshot Repository</name>
                <url>
                    http://people.apache.org/repo/m2-snapshot-repository
                </url>
                <releases>
                    <enabled>false</enabled>
                </releases>
            </pluginRepository>
            <pluginRepository>
                <id>Codehaus Snapshots</id>
                <url>http://snapshots.repository.codehaus.org/</url>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
                <releases>
                    <enabled>false</enabled>
                </releases>
            </pluginRepository>
        </pluginRepositories>

    ...

    </project>

Comme @ Jorge Ferreira déjà dit, mettez vos définitions de référentiel dans le fichier pom.xml. Utilisez profiles pour sélectionner le référentiel à utiliser via la ligne de commande:

mvn deploy -P MyRepo2

mvn deploy -P MyRepo1

Je suppose ici que vous posez cette question parce que vous souhaitez parfois ajouter un nouveau référentiel tiers à vos versions. Je peux me tromper bien sûr ...)

Dans ce cas, votre meilleur choix est d’utiliser un proxy géré tel qu’un artificiel ou un lien. Effectuez ensuite une modification unique dans settings.xml pour la définir comme un miroir pour le monde.

Toutes les mises en pension tierces que vous devez ajouter à partir de ce moment peuvent être gérées via le proxy.

Je n’avais pas vraiment utilisé maven 2 auparavant, notre système fonctionne toujours sur maven 1.x en raison de problèmes liés à maven 2.

Cependant, en regardant la documentation de maven 2, il semble qu’il n’y ait pas de propriétés système spécifiques comme celle-là. Cependant, vous pouvez probablement en créer un dans vos paramètres / paramètres en utilisant les propriétés système. Voir les propriétés système de cette http://maven.apache.org/settings.html

Donc, vous auriez $ {maven.repository} dans votre fichier de paramètres, puis vous utiliseriez le paramètre -Dmaven.repository comme vous le faites ci-dessus.

Je ne sais pas si cela fonctionnerait, mais avec quelques ajustements, je suis sûr que vous pouvez trouver quelque chose.

Créez un POM contenant les paramètres de référentiel souhaités, puis utilisez un élément parent dans vos POM de projet pour hériter des référentiels supplémentaires. L'utilisation d'un " organisation " POM présente plusieurs autres avantages lorsqu'un groupe de projets appartient à une équipe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top