2010-03-21 3 views
247

Что такое артефакт и почему Maven нуждается в нем?Что такое артефакт Maven?

+3

Подробнее о концепции Maven здесь: http://tshikatshikaaa.blogspot.nl/2012/05/introduction-to-maven-concepts-crash.html – JVerstry

+1

btw Вы можете увидеть официальный глоссарий Apache Maven для определения [ * Артефакт *] (http://maven.apache.org/glossary.html#Artifact) – informatik01

+1

Ни один из этих ответов не завершен. Вы можете видеть это только [просматривая репозиторий Maven] (http://search.maven.org/#browse|842264825). Артефакт, по-видимому, является * каталогом *, удовлетворяющим некоторым ограничениям, например. он должен содержать файл с именем 'maven-metadata.xml' и файл под названием' - .pom'. Оба этих файла имеют некоторую недокументированную схему и семантику. – jameshfisher

ответ

235

Артефакт - это файл, обычно JAR, который развертывается в репозитории Maven.

Maven build производит один или несколько артефактов, таких как скомпилированный JAR и JOR источников.

Каждый артефакт имеет идентификатор группы (обычно это обратное доменное имя, например com.example.foo), идентификатор артефакта (только имя) и строка версии. Эти три вместе однозначно идентифицируют артефакт.

Зависимости проекта указаны как артефакты.

+4

Является ли артефакт в основном файлом JAR? Итак, файл joda time jar можно назвать артефактом joda, hibernate jar можно назвать hibernate артефактом и т. Д.? –

+2

@ davidblaine: Я бы так не сказал. Процедура сборки создает артефакты. Это может быть файл jar, да. Затем файл jar является артефактом сборки. Но вы никогда не будете говорить о, например, «Артефакт Джоды» (если вы не обсуждаете процедуру сборки Джоды). Формулировка скорее «joda jar». Когда речь идет о Йоде в проекте, вы скорее говорите о «зависимости от Джоды». – sorencito

+35

Подумайте, что такое артефакт. Египтяне создали прекрасные артефакты, такие как керамика. Но, если бы вы держали в руке египетскую миску, вы бы не назвали ее «артефактом», если вы не обсуждали тот факт, что это артефакт (факт). Вы бы назвали его чашей. Они ели из чаши. Они не ели из артефакта. – cbmeeks

8

Артефакт - это JAR или что-то, что вы храните в репозитории. Maven вытаскивает их и строит ваш код.

7

В maven процесс сборки устроен как набор артефактов. Артефакты включают:

  1. Плагины, которые составляют сам Maven.
  2. Зависимости от вашего кода.
  3. Все, что производит ваша сборка, которое, в свою очередь, может потребляться чем-то другим.

Артефакты живут в репозиториях.

84

В общем программном обеспечении «artifact» - это нечто, созданное процессом разработки программного обеспечения, будь то документация по программному обеспечению или исполняемый файл.

В терминологии Maven артефакт является результирующим результатом сборки maven, как правило, jar или war или другим исполняемым файлом. Артефакты в maven идентифицируются с помощью системы координат groupId, artifactId и версии. Maven использует groupId, artifactId и version для определения зависимостей (обычно других файлов jar), необходимых для создания и запуска вашего кода.

+0

В моей книге говорится, что «основным артефактом этого онлайн-приложения будет Java-класс с именем User, который будет« ... Это то же самое, что и упомянутый вами артефакт? –

+0

@ davidblaine - не совсем, это предложение использует слово более общий смысл. –

21

Maven организует свои проекты в строительстве.

artifact in maven - это ресурс, созданный проектом maven. Каждый проект maven может иметь ровно один artifact, как jar, war, ear и т. Д.
Файл конфигурации проекта "pom.xml" описывает, как создается артефакт, как выполняются модульные тесты и т. Д. Обычно сборка программного обеспечения с maven состоит из многих maven-проектов которые строят артефакты (например, банки), которые составляют продукт.
E.g.

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 

Артефакты Maven не ограничены ресурсами Java. Вы можете генерировать любой необходимый вам ресурс. Например. документация, сайт проекта, zip-архивы, родные библиотеки и т. д.

Каждый проект maven имеет уникальный идентификатор, состоящий из [groupId, artifactId, version]. Когда для проекта maven требуются ресурсы другого проекта, зависимость определяется в его pom.xml с использованием вышеупомянутого идентификатора. Затем Maven автоматически разрешает зависимости при запуске сборки.Затем артефакты требуемых проектов загружаются либо из локального repository, который является простым каталогом в вашем доме пользователя, либо из других (удаленных) репозиториев, указанных вами pom.xml.

20

Я знаю, что это древняя тема, но я хотел добавить несколько нюансов.

Есть артефакты Maven, артефакты менеджера хранилища, а затем есть Maven Artifact s.

Артефакт Maven такой же, как другие комментаторы/респонденты говорят: это вещь, которую выплевывают, создавая проект Maven. Это может быть файл .jar или файл .war, или файл .zip, или .dll, или что у вас есть.

Администратор хранилища артефакт - это то, что управляется менеджером репозитория. Менеджер хранилища - это, в основном, высокопроизводительная служба имен для исполняемых программ и библиотек программного обеспечения. Диспетчер хранилища не заботится о том, откуда его артефакты (возможно, они были получены из сборки Maven или локального файла, или сборки Ant, или из-за компиляции ...).

A Maven Artifact - это класс Java, который представляет собой вид «имя», который разыменовывается менеджером репозитория в артефакте менеджера хранилища. При использовании в этом смысле Artifact является просто прославленным именем, состоящим из таких частей, как groupId, artifactId, version, scope, classifier и так далее.

Чтобы поставить все это вместе:

  • Ваш Maven проект, вероятно, зависит от нескольких Artifact с помощью своих <dependency> элементов.
  • Maven взаимодействует с менеджером хранилища для разрешения этих Artifact s в файлы, инструктируя диспетчер репозитория отправлять ему некоторые артефакты менеджера хранилища, соответствующие внутренним Artifact.
  • Наконец, после разрешения, Maven строит ваш проект и производит артефакт Maven. Вы можете «превратить это» в артефакт менеджера хранилища, в свою очередь, используя любой инструмент, который вам нравится, отправляя его менеджеру репозитория с достаточной координационной информацией, которую другие могут найти, когда они спросить менеджера хранилища для него ,

Надеюсь, что это поможет.

+0

+1 для новой информации о старой теме спасибо! Исправить опечатку «repoository», хотя временами poo может быть правильным словом haha ​​... все говорят, что «артефакт» является фактическим банком, может быть полезно обновить ваш ответ, чтобы указать, что при использовании, например, 'mvn install ', люди пытаются выяснить, что положить в эту запись.Итак, полное имя флага - это то, что нужно ввести для '-DartifactId = YOUR_ARTIFACT_ID', так ли это? Полное имя файла jar с версией и .jar? Кажется, это то, что вы говорите, но помогло бы некоторым быть действительно явным. Другие ответы близки к этому, но я думал, что ты лучший. – JimLohse

3

обычно мы говорим Maven терминологию о группе Id, Артефакт Id и Snapshot версии

Id Группа: идентичность группы проекта Артефакт Id: идентичность версии Snapshot проекта : версия используемого в проекте ,

Артефакт ничего, но некоторые получившийся файл как Jar, войны, уха ....

просто говорит Артефакты ничего, кроме пакетов.

12

В. Что такое артефакт в maven?
ANS: ARTIFACT - это JAR, (WAR или EAR), но это может быть и нечто другое.Каждый артефакт имеет,

  • идентификатор группы (например, com.your.package)
  • артефакт ID (только название), и
  • версия строки.
    Три вместе однозначно идентифицируют артефакт.

Q.Why Maven нуждаются в них.
Ans: Maven используется, чтобы сделать их доступными для наших приложений.

Простой ответ на простой вопрос :)

+0

Хороший ответ, поскольку я прокомментировал [другой ответ] (http://stackoverflow.com/a/20984861/3255525), сделайте его явным, что мы должны ввести в '-DartifactId = YOUR_ARTIFACT_ID' при запуске mvn install, просто предложение :) – JimLohse

+0

@JimLohse спасибо, пожалуйста, не стесняйтесь добавлять с надписью «edit» :) – VedX

0

Артефакты размещены в артефакта хранилищах. Эти репозитории не только содержат артефакты, но и организуют артефакты для легкого доступа. Это включает в себя организацию их по версии, поэтому вы можете запросить определенную версию артефакта и получить ее вместо старой (или, возможно, новой) версии того же артефакта.

артефакт, как правило, представляется в виде двух файлов:

  • Фактическое содержание, например, JAR
  • файл метаданных, спаренной с JAR, который содержит информацию о «переходных зависимостей »(то есть, другие артефакты, которые этот артефакт зависит от)»

Maven используется, чтобы сделать их доступными для наших приложений.

Смежные вопросы