web-dev-qa-db-fra.com

Puis-je inclure le fichier mvn deploy: deploy-file dans le pom ou settings.xml au lieu de l'objectif cli

J'ai besoin de déployer un pot personnalisé sur Artifactory avec le pot généré à partir de mon projet Java. Actuellement, la seule méthode que je peux trouver est par objectif de ligne de commande en utilisant:

mvn deploy:deploy-file -DgroupId=<group-id> \
  -DartifactId=<artifact-id> \
  -Dversion=<version> \
  -Dpackaging=<type-of-packaging> \
  -Dfile=<path-to-file> \
  -Durl=<url-of-the-repository-to-deploy>

Existe-t-il un moyen d'inclure cela dans le fichier pom? En tant que plugin ou quelque chose?

13
user171943

Sûr. Il suffit de définir une exécution de maven-deploy-plugin:deploy-file objectif lié à la phase deploy, configuré avec vos valeurs. Lors du déploiement de votre projet, cette exécution sera invoquée et le JAR sera déployé.

<plugin>
    <artifactId>maven-deploy-plugin</artifactId>
    <version>2.8.2</version>
    <executions>
        <execution>
            <id>deploy-file</id>
            <phase>deploy</phase>
            <goals>
                <goal>deploy-file</goal>
            </goals>
            <configuration>
                <file><!-- path-to-file --></file>
                <url><!-- url-of-the-repository-to-deploy --></url>
                <groupId><!-- group-id --></groupId>
                <artifactId><!-- artifact-id --></artifactId>
                <version><!-- version --></version>
                <packaging><!-- type-of-packaging --></packaging>
            </configuration>
        </execution>
    </executions>
</plugin>

Notez que vous devrez probablement ajouter également repositoryId . Il s'agit de l'ID du serveur à mapper sur le <id> sous le <server> section du settings.xml.

14
Tunaki

Personnellement, je ne pense pas que le déclarer dans POM soit une bonne approche. Par exemple, si vous avez un projet Maven multi-module composé de POM enfants héritant du POM parent/super POM et que le pot personnalisé à télécharger est contenu dans seulement 1 du module enfant, alors vous devrez déclarer explicitement la configuration dans le parent POM (depuis mvn deploy est normalement utilisé pour exécuter le superpom) et déclarer tous les autres POM enfants pour ignorer l'exécution de la configuration, ce qui encombre la structure POM.

Une meilleure approche serait d'écrire un script et de le lier à vos configurations d'exécution d'objectif deploy puisque le deploy:deploy-file l'objectif est à la fin du cycle de vie de la génération.

0
atjua

La section Travailler avec Maven dans le manuel Artifactory couvre ce sujet en détail, en particulier la partie concernant déploiement des artefacts .
De plus, vous pouvez regarder le screencast sur définir Artifactory comme référentiel Maven .

Pour déployer des artefacts de génération via Artifactory, vous devez ajouter un élément distributionManagement à votre fichier pom de projet avec l'URL d'un référentiel local cible dans lequel vous souhaitez déployer vos artefacts. De plus, vous devrez configurer les informations d'identification du serveur Artifactory dans votre fichier settings.xml.
Artifactory peut vous aider à générer à la fois l'extrait de distributionManagement et le fichier settings.xml (voir plus d'informations dans les liens que j'ai fournis ci-dessus).

0
Dror Bereznitsky

Vous pouvez télécharger custom maven settings.xml vers TeamCity, où vous devez spécifier distributionManagement et server comme indiqué sur cette page de documentation . Après cela, si vous modifiez votre étape de construction de maven pour utiliser les paramètres téléchargés, le déploiement sera effectué en ajoutant simplement le dépliant gial à l'ensemble des objectifs exécutés dans cette étape.

0
Oleg Rybak