Che cos'è un manufatto Maven?


342

Che cos'è un artefatto e perché ne ha bisogno Maven?


3
Maggiori informazioni sui concetti di Maven qui: tshikatshikaaa.blogspot.nl/2012/05/…
Jérôme Verstrynge

1
a proposito Puoi vedere il glossario ufficiale di Apache Maven per la definizione di un manufatto
informatik01

1
Nessuna di queste risposte è completa. Puoi vederlo semplicemente sfogliando un repository Maven . Apparentemente un artefatto è una directory che soddisfa alcuni vincoli, ad esempio deve contenere un file chiamato maven-metadata.xmle un file chiamato <artifactId>-<version>.pom. Entrambi questi file hanno uno schema e una semantica privi di documenti.
jameshfisher,

Risposte:


303

Un artefatto è un file, in genere un JAR, che viene distribuito in un repository Maven.

Una build Maven produce uno o più artefatti, come un JAR compilato e un JAR "source".

Ogni artefatto ha un ID gruppo (di solito un nome di dominio invertito, come com.example.foo), un ID artefatto (solo un nome) e una stringa di versione. I tre insieme identificano in modo univoco il manufatto.

Le dipendenze di un progetto sono specificate come artefatti.


5
Un artefatto è fondamentalmente un file JAR? Quindi, il file joda time jar può essere chiamato artefatto joda, ibernazione jar può essere chiamato ibernazione artefatto ecc?
David Blaine,

47
Pensa a cos'è un artefatto. Gli egiziani hanno creato meravigliosi manufatti come la ceramica. Ma se tenessi in mano una ciotola egiziana, non ti riferiresti ad esso come un "artefatto" a meno che non stia discutendo del fatto che È un artefatto (fatto). Ti riferiresti ad esso come una ciotola. Mangiarono dalla scodella. Non hanno mangiato fuori dal manufatto.
cbmeeks,

3
Penso che @cbmeeks stia ottenendo che "artefatto" non è un nome per una "cosa", è un ruolo nel processo di compilazione. Qualunque cosa può essere classificata come "artefatto" se Maven lo produce e gli vengono date speciali coordinate Maven per identificarlo.
Garret Wilson,

Se ho qualcosa chiamato "com.example: mylibrary: 1.0.0" (groupId: artifactId: version), che consiste in un jar, un pom e un jar di origine, che dei seguenti è un artefatto: 1. ogni file (pom, jar, source jar) è un artefatto separato; 2. l'insieme di file che condividono lo stesso (groupId: artefactId: version) compongono un singolo artefatto; 3. qualcos'altro?
Laurence Gonsalves il

Non spieghi come ottenere il groupid e l'artefactid con il nome della classe. Downvote
Philip Rego,

114

In termini generali di software, un " artefatto " è qualcosa prodotto dal processo di sviluppo del software, che si tratti di documentazione relativa al software o di un file eseguibile.

In Maven terminologia, il manufatto è l'uscita risultante del costruire Maven, generalmente una jaro di warfile o altro eseguibile. Gli artefatti in Maven sono identificati da un sistema di coordinate di groupId, artefactId e versione. Maven utilizza il groupId, artifactIde versiondi individuare le dipendenze (di solito altri file jar) necessari per costruire e gestire il codice.


Il mio libro dice "il manufatto principale di questa applicazione online sarà una classe Java chiamata User, che lo farà" ... È lo stesso del manufatto che hai citato?
David Blaine,

@davidblaine - non esattamente, quella frase usa la parola in un senso più generale.
Ken Liu,

27

So che questo è un filo antico ma volevo aggiungere alcune sfumature.

Ci sono artefatti Maven, artefatti del gestore del repository e poi ci sono Maven Artifact.

Un artefatto di Maven è proprio come dicono altri commentatori / responder: è una cosa che viene eliminata costruendo un progetto Maven. Potrebbe essere un .jarfile, o un .warfile, o un .zipfile, o un .dll, o cosa hai.

Un artefatto del gestore del repository è una cosa che è gestita da un gestore del repository. Un gestore di repository è fondamentalmente un servizio di denominazione altamente performante per eseguibili e librerie software. A un gestore di repository non importa da dove provengano i suoi artefatti (forse provengono da una build Maven, o da un file locale, da una build Ant o da una compilazione manuale ...).

Un Maven Artifactè una classe Java che rappresenta il tipo di "nome" che viene referenziato da un gestore di repository in un artefatto del gestore di repository. Quando utilizzato in questo senso, una Artifactè solo un nome glorificato composto di elementi quali groupId, artifactId, version, scope, classifiere così via.

Per mettere tutto insieme:

  • Il tuo progetto Maven probabilmente dipende da diversi Artifacts tramite i suoi <dependency>elementi.
  • Maven interagisce con un gestore di repository per risolverli Artifactin file dando istruzioni al gestore di repository di inviargli alcuni artefatti del gestore di repository che corrispondono a quelli interni Artifact.
  • Alla fine, dopo la risoluzione, Maven costruisce il tuo progetto e produce un artefatto Maven. È possibile scegliere di "trasformare questo in" un artefatto del gestore del repository, a sua volta, utilizzando qualsiasi strumento desiderato, inviandolo al gestore del repository con informazioni di coordinamento sufficienti che altre persone possono trovarlo quando lo richiedono al gestore del repository.

Spero che aiuti.


+1 per nuove informazioni sul vecchio thread grazie! Correggi l'errore "repository" anche se a volte cacca potrebbe essere la parola giusta ahah ... tutti dicono che "artefatto" è il vero vaso, potrebbe essere utile aggiornare la tua risposta per sottolineare che quando si usa, ad esempio mvn install, le persone sono cercando di capire cosa inserire in quella voce. Quindi il nome completo del barattolo è quello per cui entrare -DartifactId=YOUR_ARTIFACT_ID, giusto? Il nome completo del file jar con versione e .jar? Sembra essere quello che stai dicendo, ma aiuterebbe alcuni ad essere davvero espliciti. Altre risposte si avvicinano a questo, ma ho pensato al tuo meglio.
JimLohse,

23

Maven organizza la sua costruzione in progetti.

Un artifactin maven è una risorsa generata da un progetto maven. Ogni progetto maven può avere esattamente uno artifactcome un jar, war, ear, ecc.
Il file di configurazione del progetto "pom.xml"descrive come viene costruito l'artefatto, come vengono eseguiti i test unitari, ecc. Comunemente un progetto software creato con maven è costituito da molti progetti maven che creano artefatti (ad es. Vasetti ) che costituiscono il prodotto.
Per esempio

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

Gli artefatti di Maven non si limitano alle risorse Java. Puoi generare qualunque risorsa ti serva. Ad esempio documentazione, sito del progetto, archivi zip, librerie native, ecc.

Ogni progetto maven ha un identificativo univoco che ne consegue [groupId, artifactId, version]. Quando un progetto maven richiede risorse di un altro progetto, viene configurata una dipendenza pom.xmlutilizzando l'identificatore sopra menzionato. Maven quindi risolve automaticamente le dipendenze quando viene attivata una build. Gli artefatti dei progetti richiesti vengono quindi caricati dal locale repository, che è una semplice directory nella home dell'utente, oppure da altri repository (remoti) specificati in te pom.xml.


19

D. Che cos'è l'Artefatto in Maven?
ANS: ARTIFACT è un JAR, (WAR o EAR), ma potrebbe anche essere qualcos'altro. Ogni artefatto ha,

  • un ID di gruppo (come com.your.package),
  • un ID artefatto (solo un nome) e
  • una stringa di versione.
    I tre insieme identificano in modo univoco il manufatto.

D. Perché Maven ne ha bisogno?
Risposta: Maven viene utilizzato per renderli disponibili per le nostre applicazioni.


Bella risposta, come ho commentato su un'altra risposta , rende esplicito ciò in cui dovremmo digitare -DartifactId=YOUR_ARTIFACT_IDquando eseguiamo mvn install, solo un suggerimento :)
JimLohse,

@JimLohse grazie, sentiti libero di aggiungere con il titolo "modifica" :)
VdeX,

9

Un artefatto è un JAR o qualcosa che si archivia in un repository. Maven li fa uscire e crea il tuo codice.


8

Per eseguire, il processo di creazione è organizzato come un insieme di artefatti. I manufatti includono:

  1. I plugin che compongono Maven stesso.
  2. Dipendenze da cui dipende il codice.
  3. Tutto ciò che la tua build produce può a sua volta essere consumato da qualcos'altro.

Gli artefatti vivono in repository.


4

di solito parliamo della terminologia di Maven su ID gruppo, ID artefatto e versione istantanea

ID gruppo: identità del gruppo del progetto Id artefatto: identità del progetto Versione istantanea: la versione utilizzata dal progetto.

Il manufatto non è altro che un file risultante come Jar, War, Ear ....

dice semplicemente che gli artefatti non sono altro che pacchetti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.