2010-03-21 12 views
247

¿Qué es un artefacto y por qué Maven lo necesita?¿Qué es un artefacto Maven?

+3

Más sobre los conceptos de Maven aquí: http://tshikatshikaaa.blogspot.nl/2012/05/introduction-to-maven-concepts-crash.html – JVerstry

+1

btw Puede ver el glosario oficial de Apache Maven para la definición de [ * Artefacto *] (http://maven.apache.org/glossary.html#Artifact) – informatik01

+1

Ninguna de estas respuestas está completa. Puede ver esto simplemente [navegando por un repositorio de Maven] (http://search.maven.org/#browse|842264825). Un artefacto es aparentemente un * directorio * que satisface algunas restricciones, p. debe contener un archivo llamado 'maven-metadata.xml' y un archivo llamado' - .pom'. Ambos archivos tienen algunos esquemas y semántica no documentados. – jameshfisher

Respuesta

235

Un artefacto es un archivo, generalmente un JAR, que se implementa en un repositorio de Maven.

Una compilación de Maven produce uno o más artefactos, como un JAR compilado y un JAR de "fuentes".

Cada artefacto tiene una ID de grupo (generalmente un nombre de dominio invertido, como com.example.foo), una ID de artefacto (solo un nombre) y una cadena de versión. Los tres juntos identifican de forma única el artefacto.

Las dependencias de un proyecto se especifican como artefactos.

+4

¿Es un artefacto básicamente un archivo JAR? Entonces, ¿el archivo joda time jar se puede llamar artefacto joda, hibernate jar se puede llamar hibernate artefact, etc.? –

+2

@davidblaine: No lo diría así. El procedimiento de compilación genera artefactos. Esto puede ser un archivo jar, sí. El archivo jar entonces es un artefacto de construcción. Pero nunca hablarías de, p. Ej., "Artefacto Joda" (a menos que esté en una discusión sobre el procedimiento de compilación de Joda). La redacción es más bien "joda jar". Cuando te refieres a Joda en un proyecto, mejor hablas de una "dependencia de Joda". – sorencito

+35

Piensa en lo que realmente es un artefacto. Los egipcios crearon maravillosos artefactos como la cerámica. Pero, si estuvieras sosteniendo un cuenco egipcio en tu mano, no lo mencionarías como un "artefacto" a menos que estuvieras discutiendo el hecho de que ES un artefacto (hecho). Usted se referiría a esto como un cuenco. Comieron fuera del tazón. No comieron fuera del artefacto. – cbmeeks

8

Un artefacto es un JAR o algo que usted almacena en un repositorio. Maven los saca y construye tu código.

7

Para maven, el proceso de compilación está organizado como un conjunto de artefactos. Los artefactos incluyen:

  1. Los complementos que componen Maven.
  2. Dependencias de las que depende su código.
  3. Cualquier cosa que produzca su construcción puede, a su vez, ser consumida por otra cosa.

Los artefactos viven en repositorios.

84

En términos generales de software, un "artifact" es algo producido por el proceso de desarrollo de software, ya sea documentación relacionada con el software o un archivo ejecutable.

En la terminología de Maven, el artefacto es la salida resultante de la construcción maven, generalmente un jar o war u otro archivo ejecutable. Los artefactos en maven se identifican mediante un sistema de coordenadas de groupId, artifactId y version. Maven usa groupId, artifactId y version para identificar las dependencias (generalmente otros archivos jar) necesarias para compilar y ejecutar el código.

+0

Mi libro dice que "el artefacto principal de esta aplicación en línea será una clase Java llamada Usuario, que lo hará" ... ¿Es esto lo mismo que el artefacto que mencionaste? –

+0

@davidblaine - no exactamente, esa oración usa la palabra un sentido más general. –

21

Maven organiza su construcción en proyectos.

Un artifact en maven es un recurso generado por un proyecto de maven. Cada proyecto Maven puede tener exactamente un artifact como un jar, war, ear, etc.
fichero de configuración del proyecto "pom.xml" describe cómo el artefacto se construye, cómo se ejecutan las pruebas de unidad, etc. Comúnmente construir un proyecto de software con Maven se compone de muchos maven-proyectos que construyen artefactos (por ejemplo, jarras) que constituyen el producto.
P. ej.

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 

Los artefactos de Maven no se limitan a los recursos de java. Puede generar cualquier recurso que necesite. P.ej. documentación, sitio de proyecto, archivos comprimidos, bibliotecas nativas, etc.

Cada proyecto de maven tiene un identificador único consistente en [groupId, artifactId, version]. Cuando un proyecto maven requiere recursos de otro proyecto, se configura una dependencia en su pom.xml usando el identificador mencionado anteriormente. Maven luego resuelve automáticamente las dependencias cuando se genera una compilación.Los artefactos de los proyectos requeridos se cargan desde el repository local, que es un directorio simple en el hogar de su usuario, o desde otros repositorios (remotos) especificados en usted pom.xml.

20

Sé que este es un hilo antiguo pero quería agregar algunos matices.

Existen artefactos de Maven, artefactos de gestor de repositorio y luego hay Maven Artifact s.

Un artefacto de Maven es tal como dicen otros comentaristas/respondedores: es algo que se escuchan al construir un proyecto de Maven. Eso podría ser un archivo .jar, o un archivo .war, o un archivo .zip, o un .dll, o lo que sea.

Un artefacto de gestor de repositorio es una cosa que, bueno, es administrada por un administrador de repositorio. Un gestor de repositorio es básicamente un servicio de nombres de alto rendimiento para ejecutables y bibliotecas de software. A un administrador de repositorios no le importa de dónde provienen sus artefactos (tal vez provengan de una compilación Maven, o un archivo local, o una compilación Ant, o una compilación manual ...).

A Maven Artifact es una clase de Java que representa el tipo de "nombre" que un gestor de repositorios desreferencia a un artefacto de gestor de repositorio. Cuando se utiliza en este sentido, un Artifact es simplemente un nombre glorificado formado por partes como groupId, artifactId, version, scope, classifier y así sucesivamente.

Para ponerlo todo junto:

  • Su proyecto Maven probablemente depende de varios Artifact s por medio de sus <dependency> elementos.
  • Maven interactúa con un administrador de repositorios para resolver esos Artifact s en archivos ordenando al administrador del repositorio que le envíe algunos artefactos del gestor de repositorio que corresponden a los Artifact internos.
  • Finalmente, después de la resolución, Maven construye su proyecto y produce un artefacto Maven. Puede optar por "convertir esto en" un artefacto de administrador de repositorio utilizando, a su vez, la herramienta que desee, enviándola al administrador de repositorio con suficiente información de coordinación para que otras personas puedan encontrarla cuando ellos pregunten al administrador de repositorio por ella .

Espero que ayude.

+0

+1 para obtener nueva información sobre el hilo viejo gracias! Se corrigió el error tipográfico "repoository" aunque a veces poo podría ser la palabra correcta jaja ... todo el mundo dice que el "artefacto" es el contenedor real, podría ser útil actualizar tu respuesta para señalar que al usar, por ejemplo, 'mvn install ', la gente está tratando de descubrir qué poner en esa entrada.Entonces, el nombre completo del contenedor es lo que debe ingresar para '-DadifactId = YOUR_ARTIFACT_ID', ¿correcto? El nombre completo del archivo jar con la versión y .jar? Parece ser lo que dices, pero ayudaría a algunos a ser realmente explícitos. Otras respuestas se acercan a esto, pero pensé que era lo mejor. – JimLohse

3

por lo general estamos hablando de Maven Terminología sobre el ID de grupo, Artefacto Id y Snapshot Versión

ID de grupo: la identidad del grupo del proyecto Artefacto Id: identidad del proyecto versión instantánea: la versión utilizada por el proyecto .

Artefacto es nada más que un poco de archivo resultante como Jar, Guerra, del oído ....

dice simplemente artefactos son nada más que paquetes.

12

Q. ¿Qué es Artifact in maven?
ANS: ARTIFACT es un JAR, (WAR o EAR), pero podría ser también otra cosa.Cada artefacto tiene,

  • un ID de grupo (como com.your.package),
  • un ID de artefacto (sólo un nombre), y
  • una cadena de versión.
    Los tres juntos identifican de forma única el artefacto.

Q.¿Por qué Maven los necesita?
Resp. Se utiliza Maven para que estén disponibles para nuestras aplicaciones.

simple respuesta a una pregunta simple :)

+0

Buena respuesta, como ya comenté en [otra respuesta] (http://stackoverflow.com/a/20984861/3255525), explicé lo que debemos escribir en '-DadifactId = YOUR_ARTIFACT_ID' al ejecutar mvn install, solo una sugerencia :) – JimLohse

+0

@JimLohse gracias, por favor siéntanse libres de agregar con el título "editar" :) – VedX

0

Los artefactos se encuentran en los repositorios de artefactos. Esos repositorios no solo contienen los artefactos, sino que organizan los artefactos para facilitar el acceso. Esto incluye organizarlos por versión, para que pueda solicitar una versión específica de un artefacto y obtenerla, en lugar de una versión anterior (o posiblemente más nueva) de ese mismo artefacto.

Un artefacto se suele representar en forma de dos archivos:

  • El contenido real, como un JAR
  • un archivo de metadatos, junto con el JAR, que tiene información sobre “dependencias transitivas ”(es decir, los otros artefactos que este artefacto depende de )”

Maven se utiliza para que estén disponibles para nuestras aplicaciones.

Cuestiones relacionadas