381 votes

Qu'est-ce qu'un artefact Maven ?

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

5 votes

Pour en savoir plus sur les concepts de Maven, cliquez ici : tshikatshikaaa.blogspot.nl/2012/05/

1 votes

Btw Vous pouvez consulter le glossaire officiel d'Apache Maven pour la définition d'une Artefact

1 votes

Aucune de ces réponses n'est complète. Vous pouvez le voir juste en parcourir un dépôt Maven . Un artefact est apparemment un répertoire satisfaisant à certaines contraintes, par exemple, il doit contenir un fichier appelé maven-metadata.xml et un fichier appelé <artifactId>-<version>.pom . Ces deux fichiers ont un schéma et une sémantique non documentés.

344voto

Stuart Sierra Points 5671

Un artefact est un fichier, généralement un JAR, qui est déployé dans un dépôt Maven.

Une construction Maven produit un ou plusieurs artefacts, tels qu'un JAR compilé et un JAR "sources".

Chaque artefact possède un ID de groupe (généralement un nom de domaine inversé, comme com.exemple.foo), un ID d'artefact (juste un nom) et une chaîne de version. Ensemble, ces trois éléments identifient l'artefact de façon unique.

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

10 votes

Un artefact est-il fondamentalement un fichier JAR ? Ainsi, le fichier JAR de Joda Time peut être appelé artefact Joda, le JAR d'Hibernate peut être appelé artefact Hibernate, etc.

58 votes

Pensez à ce qu'est réellement un artefact. Les Égyptiens ont créé de merveilleux artefacts tels que des poteries. Mais si vous teniez un bol égyptien dans votre main, vous n'en parleriez pas comme d'un "artefact", à moins que vous ne discutiez du fait que c'est un artefact (fait). Vous y feriez référence comme à un bol. Ils mangeaient dans le bol. Ils ne mangeaient pas dans l'artefact.

8 votes

Je pense que ce à quoi @cbmeeks veut en venir, c'est que "artefact" n'est pas un nom pour une "chose", c'est un rôle dans le processus de construction. N'importe quoi peut être classé comme un "artefact" si Maven le produit et qu'on lui donne un nom spécial Maven. coordonnées pour l'identifier.

129voto

Ken Liu Points 7779

En termes généraux de logiciel, un " artefact " est un élément produit par le processus de développement du logiciel, qu'il s'agisse de la documentation relative au logiciel ou d'un fichier exécutable.

Dans la terminologie de Maven, l'artefact est le résultat de la construction de Maven, généralement une jar ou war ou tout 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 le groupId , artifactId et version pour identifier les dépendances (généralement d'autres fichiers jar) nécessaires pour construire et exécuter votre code.

0 votes

Mon livre dit "l'artefact principal de cette application en ligne sera une classe Java nommée User, qui"... Est-ce la même chose que l'artefact que vous avez mentionné ?

0 votes

@davidblaine - pas exactement, cette phrase utilise le mot dans un sens plus général.

28voto

Laird Nelson Points 2815

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

Il y a des artefacts Maven, des artefacts de gestionnaire de référentiel et puis il y a Maven Artifact s.

Un artefact Maven est exactement ce que disent les autres commentateurs/répondants : c'est un objet qui est produit par la construction d'un projet Maven. Cela peut être un .jar ou un fichier .war ou un fichier .zip ou un fichier .dll ou ce que vous voulez.

Un artefact de gestionnaire de référentiel est une chose qui est, eh bien, gérée par un gestionnaire de référentiel. Un gestionnaire de référentiel est essentiellement un service de nommage très performant pour les exécutables et les bibliothèques de logiciels. Un gestionnaire de référentiel ne se soucie pas de l'origine de ses artefacts (ils peuvent provenir d'un build Maven, d'un fichier local, d'un build 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, un Artifact est juste un nom glorifié composé de parties telles que groupId , artifactId , version , scope , classifier et ainsi de suite.

Pour mettre tout ça ensemble :

  • Votre projet Maven dépend probablement de plusieurs Artifact par le biais de son <dependency> éléments.
  • Maven interagit avec un gestionnaire de référentiel pour résoudre ces problèmes. Artifact en fichiers en demandant au gestionnaire de référentiel de lui envoyer des artefacts de gestionnaire de référentiel correspondant aux fichiers internes de l Artifact s.
  • Enfin, après la résolution, Maven construit votre projet et produit un artefact Maven. Vous pouvez choisir de "transformer" cet artefact en un artefact de gestionnaire de référentiel en utilisant à votre 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 quand ils demandez-le au gestionnaire du dépôt.

J'espère que cela vous aidera.

0 votes

+1 pour de nouvelles infos sur un vieux fil, merci ! Corrigez la faute de frappe "repoository" bien que parfois "poo" pourrait être le bon mot haha ... tout le monde dit que l'"artefact" est le pot réel, il pourrait être utile de mettre à jour votre réponse pour indiquer que lors de l'utilisation, par exemple, mvn install les gens essaient de comprendre ce qu'il faut mettre dans cette entrée. Donc le nom complet du bocal est ce qu'il faut entrer pour -DartifactId=YOUR_ARTIFACT_ID c'est bien ça ? Le nom complet du fichier jar avec la version et .jar ? C'est ce que vous semblez dire, mais il serait utile d'être vraiment explicite. D'autres réponses s'en approchent, mais je pense que la vôtre est la meilleure.

26voto

coding.mof Points 1495

Maven organise ses constructions en projets.

Un site artifact dans 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. En général, un projet logiciel construit avec maven consiste en de nombreux projets maven qui construisent des artefacts (par exemple des jars) qui 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 sont pas limités aux ressources java. Vous pouvez générer n'importe quelle ressource dont vous avez besoin. Par exemple, de la documentation, un site de projet, des archives zip, des bibliothèques natives, etc.

Chaque projet maven a un identifiant unique composé de [groupId, artifactId, version] . Lorsqu'un projet maven a besoin des ressources d'un autre projet, une dépendance est configurée dans son fichier de configuration. pom.xml en utilisant l'identifiant mentionné ci-dessus. Maven résout ensuite automatiquement les dépendances lorsqu'une construction est déclenchée. Les artefacts des projets requis sont ensuite chargés soit à partir de la base de données locale de Maven, soit à partir de la base de données de Maven. repository qui est un simple répertoire dans la maison de l'utilisateur, ou d'autres dépôts (distants) spécifiés dans le formulaire de demande. pom.xml .

10voto

duffymo Points 188155

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X