Qu'est-ce qu'un artefact et pourquoi Maven en a besoin ?
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.
Qu'est-ce qu'un artefact et pourquoi Maven en a besoin ?
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.
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.
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.
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.
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.
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 :
Artifact
par le biais de son <dependency>
éléments.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.J'espère que cela vous aidera.
+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.
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
.
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.
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.