web-dev-qa-db-fra.com

Qu'est-ce qu'un artefact Maven?

Qu'est-ce qu'un artefact et pourquoi Maven en a-t-il besoin?

313
Maxim Veksler

Un artefact est un fichier, généralement un fichier JAR, qui est déployé dans un référentiel Maven.

Une construction Maven génère un ou plusieurs artefacts, tels qu'un fichier JAR compilé et un fichier JAR "sources".

Chaque artefact a un ID de groupe (généralement un nom de domaine inversé, tel que com.example.foo), un ID d'artefact (juste un nom) et une chaîne de version. Les trois ensemble identifient de manière unique l'artefact.

Les dépendances d'un projet sont spécifiées en tant qu'artefacts.

282
Stuart Sierra

En termes généraux de logiciel, un " artefact " est quelque chose produit par le processus de développement logiciel, que ce soit une documentation relative au logiciel ou un fichier exécutable.

Dans la terminologie Maven, l'artefact est la sortie résultante de la construction maven, généralement un fichier jar ou war ou un autre fichier exécutable. Les artefacts dans maven sont identifiés par un système de coordonnées de groupId, artifactId et version. Maven utilise les variables groupId, artifactId et version pour identifier les dépendances (généralement d'autres fichiers jar) nécessaires à la création et à l'exécution de votre code.

105
Ken Liu

Je sais que c'est un fil ancien, mais je voulais ajouter quelques nuances.

Il existe des artefacts Maven, des artefacts de gestionnaire de référentiel, puis Maven Artifacts.

Un artefact Maven est juste comme le disent d’autres commentateurs/répondants: c’est une chose qui a été crachée en construisant un projet Maven. Cela peut être un fichier .jar, ou un fichier .war, ou un fichier .Zip, ou un .dll, ou ce que vous avez.

Un artefact de gestionnaire de référentiel est une chose qui est, bien, gérée par un gestionnaire de référentiel. Un gestionnaire de référentiel est fondamentalement un service de nommage hautement performant pour les exécutables et les bibliothèques de logiciels. Un gestionnaire de référentiel ne se soucie pas de la provenance de ses artefacts (peut-être proviennent-ils d'une version Maven, d'un fichier local, d'une version Ant, ou d'une compilation manuelle ...).

Un Maven Artifact est une classe Java qui représente le type de "nom" qui est déréférencé par un gestionnaire de référentiel dans un artefact de gestionnaire de référentiel. Lorsqu'il est utilisé dans ce sens, Artifact est simplement un nom glorifié composé d'éléments tels que groupId, artifactId, version, scope, classifier et ainsi de suite.

Pour tout mettre ensemble:

  • Votre projet Maven dépend probablement de plusieurs Artifacts au moyen de ses éléments <dependency>.
  • Maven interagit avec un gestionnaire de référentiel pour résoudre ces Artifacts en fichiers en demandant au gestionnaire de référentiel de lui envoyer des artefacts de gestionnaire de référentiel qui correspondent aux Artifacts internes.
  • Enfin, après résolution, Maven construit votre projet et produit un artefact Maven. Vous pouvez choisir de "transformer cela" en artefact de gestionnaire de référentiel en utilisant, à son tour, l'outil de votre choix, en l'envoyant au gestionnaire de référentiel avec suffisamment d'informations de coordination pour que d'autres personnes puissent le trouver lorsque ils demander le gestionnaire de référentiel pour cela.

J'espère que ça t'as aidé.

24
Laird Nelson

Maven organise ses projets de construction.

Un artifact in maven est une ressource générée par un projet maven. Chaque projet maven peut avoir exactement un artifact comme un jar, war, ear, etc.
Le fichier de configuration du projet "pom.xml" décrit comment l’artefact est construit, comment les tests unitaires sont exécutés, etc. Un projet logiciel construit avec maven consiste en de nombreux projets maven qui construisent constituent le produit.
Par exemple.

Root-Project   // produces no artifact, simply triggers the build of the other projects
  App-Project  // The application, that uses the libraries
  Lib1-Project // A project that creates a library (jar)
  Lib2-Project // Another library
  Doc-Project  // A project that generates the user documentation from some resources

Les artefacts Maven ne se limitent pas à Java ressources. Vous pouvez générer toutes les ressources dont vous avez besoin. Par exemple. documentation, site du projet, archives ZIP, bibliothèques natives, etc.

Chaque projet maven a un identifiant unique composé de [groupId, artifactId, version]. Lorsqu'un projet maven nécessite des ressources d'un autre projet, une dépendance est configurée dans pom.xml à l'aide de l'identificateur susmentionné. Maven résout ensuite automatiquement les dépendances quand une construction est déclenchée. Les artefacts des projets requis sont ensuite chargés soit du répertoire local repository, qui est un simple répertoire du répertoire de l'utilisateur, soit d'autres référentiels (distants) spécifiés dans votre pom.xml.

23

Q. Qu'est-ce que Artifact in maven?
ANS: ARTIFACT est un JAR (WAR ou EAR), mais cela pourrait aussi être autre chose. Chaque artefact a,

  • un identifiant de groupe (comme com.votre.package),
  • un identifiant d'artefact (juste un nom), et
  • une chaîne de version.
    Les trois ensemble identifient de manière unique l'artefact.

Q.Pourquoi Maven en a-t-il besoin?
Ans: Maven est utilisé pour les rendre disponibles pour nos applications.

18
VdeX

Un artefact est un fichier JAR ou quelque chose que vous stockez dans un référentiel. Maven les sort et construit votre code.

9
duffymo

Pour créer, le processus de construction est organisé comme un ensemble d'artefacts. Les artefacts comprennent:

  1. Les plugins qui composent Maven lui-même.
  2. Dépendances dont dépend votre code.
  3. Tout ce que votre construction produit peut, à son tour, être consommé par autre chose.

Les artefacts vivent dans des dépôts.

8
bmargulies

nous parlons généralement de la terminologie Maven à propos de l'identifiant de groupe, de l'identifiant d'artefact et de la version de l'instantané

Identifiant de groupe: identité du groupe du projet Identifiant d'artefact: identité du projet Version de l'instantané: version utilisée par le projet.

Artifact n'est rien d'autre qu'un fichier résultant, tel que Jar, War, Ear ....

dit simplement que les artefacts ne sont que des paquets.

4
Venky Vungarala