Що таке артефакт Мейвена?


342

Що таке артефакт і для чого Мевен потрібен?


3
Більше про концепції Maven тут: tshikatshikaaa.blogspot.nl/2012/05/…
Jérôme Verstrynge

1
btw Ви можете побачити офіційний словник Apache Maven для визначення артефакту
informatik01

1
Жодна з цих відповідей не є повною. Ви можете переконатися в цьому, переглянувши сховище Maven . Артефакт - це, мабуть, каталог, що задовольняє деяким обмеженням, наприклад, він повинен містити файл, який називається, maven-metadata.xmlі файл, який називається <artifactId>-<version>.pom. Обидва ці файли мають деяку недокументовану схему та семантику.
jameshfisher

Відповіді:


303

Артефакт - це файл, як правило, JAR, який розміщується у сховищі Maven.

Споруда Maven створює один або кілька артефактів, таких як складений JAR та JAR "джерел".

Кожен артефакт має груповий ідентифікатор (як правило, зворотне ім’я домену, наприклад com.example.foo), ідентифікатор артефакту (лише ім'я) та рядок версії. Троє разом однозначно ідентифікують артефакт.

Залежності проекту визначаються як артефакти.


5
Артефакт - це файл JAR? Отже, файл баночки часу joda можна назвати артефактом joda, сплячку зі сплячки можна назвати сплячим артефактом тощо?
david blaine

47
Подумайте, що таке насправді артефакт. Єгиптяни створили чудові артефакти, такі як гончарство. Але, якби ви тримали в руці єгипетську миску, ви б не називали це "артефактом", якщо б ви не обговорювали те, що це артефакт (факт). Ви б називали це чашею. Вони їли з миски. Вони не їли з артефакту.
cbmeeks

3
Думаю, що @cbmeeks отримує те, що "артефакт" - це не назва "речі", це роль у процесі збирання. Все, що можна класифікувати як "артефакт", якщо Maven виробляє його, і йому надаються спеціальні координати Maven для його ідентифікації.
Гаррет Вілсон

Якщо у мене є щось, що називається "com.example: mylibrary: 1.0.0" (groupId: artifactId: версія), що складається з jar, pom і джерело jar, що з наведеного нижче є артефактом: 1. кожен файл (pom, jar, source jar) - окремий артефакт; 2. набір файлів, які мають одне і те ж (groupId: artifactId: версія) складають один артефакт; 3. ще щось?
Лоранс Гонсальвес

Ви не пояснюєте, як отримати групу і артефактиду, давши назву класу. Downvote
Філіп Рего

114

У загальних рисах програмного забезпечення " артефакт " - це щось, що виробляється процесом розробки програмного забезпечення, будь то документація, що стосується програмного забезпечення, або виконуваний файл.

У термінології Maven, артефакт в результаті виходу з Maven збірки, як правило, jarабо warчи інший виконуваний файл. Артефакти в maven ідентифікуються за системою координат groupId, artifactId та версії. Maven використовує groupId, artifactIdі versionдля виявлення залежностей (зазвичай інші JAR - файли) , необхідних для складання та запуску коду.


У моїй книзі сказано, що "основним артефактом цієї онлайн-програми буде клас Java на ім'я Користувач, який буде" ... Це те саме, що артефакт ви згадали?
david blaine

@davidblaine - не зовсім те, що в реченні використовується слово в більш загальному значенні.
Кен Лю

27

Я знаю, що це давня нитка, але я хотів додати кілька нюансів.

Є артефакти Maven, артефакти менеджера сховищ, а потім є Maven Artifacts.

Артефакт Мейвена - це так, як кажуть інші коментатори / респонденти: це річ, яку виплюнули, будуючи проект Maven. Це може бути .jarфайл, або .warфайл, або .zipфайл, або а .dll, або що у вас є.

Артефакт менеджера сховищ - це річ, якою керує менеджер сховища. Менеджер репозиторію - це, в основному, послуга іменування виконавчих програм та бібліотек. Менеджеру сховищ байдуже, звідки беруться його артефакти (можливо, вони надходили зі збірки Maven, або локального файлу, або збірки мурашок, або компіляції від руки…).

Maven Artifact- клас Java, який представляє різновид "імені", який отримує перенавантаження менеджером сховища в артефакт менеджера репозиторію. При використанні в цьому сенсі, Artifactце просто прославив ім'я з таких частин , як groupId, artifactId, version, scope, classifierі так далі.

Щоб скласти все це разом:

  • Ваш проект Maven, ймовірно, залежить від кількох Artifacts за його <dependency>елементами.
  • Maven взаємодіє з менеджером сховища для вирішення цих Artifacts у файлах, доручаючи менеджеру сховища надіслати йому деякі артефакти менеджера репозиторію, які відповідають внутрішнім Artifacts.
  • Нарешті, після вирішення, Maven будує ваш проект і виробляє артефакт Maven. Ви можете вибрати "перетворити це на" артефакт менеджера репозиторію, використовуючи, будь-який інструмент, який вам подобається, надіславши його менеджеру сховища з достатньою координуючою інформацією, щоб інші люди могли його знайти, коли вони запитують про це менеджера репозиторію.

Сподіваюся, що це допомагає.


+1 за нову інформацію про стару тему дякую! Зафіксуйте помилку "репоосерії", хоча часом пу може бути правильним словом ха-ха ... всі кажуть, що "артефакт" - це власне баночка, може бути корисним оновити свою відповідь, щоб вказати, що при використанні, наприклад mvn install, людей намагаючись розібратися, що поставити в цьому записі. Тож повне найменування баночки - це те, що потрібно вводити -DartifactId=YOUR_ARTIFACT_ID, чи не так? Повне ім'я файлу jar з версією та .jar? Здається, це те, що ви говорите, але допомогло б деяким бути справді явними. Інші відповіді наближаються до цього, але я вважав, що ваш найкращий.
JimLohse

23

Maven організовує його будівництво в проектах.

artifactУ мавена є ресурсом , породженим проектом Maven. Кожен проект maven може мати рівно один artifactподібний jar, war, ear, тощо.
У файлі конфігурації проекту "pom.xml"описано, як створюється артефакт, як проводяться одиничні тести і т. Д. Зазвичай програмний проект, побудований з maven, складається з багатьох проектів, що створюють артефакти (наприклад, банки ), що складають продукт.
Напр

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.


19

Q. Що таке артефакт у maven?
ANS: ARTIFACT - це JAR, (WAR або EAR), але це може бути і щось інше. Кожен артефакт має,

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

З. Чому Мевен потрібні їм?
Відповідь: Maven використовується, щоб зробити їх доступними для наших програм.


Хороша відповідь, як я коментував іншу відповідь , зробіть чітким, що ми маємо набрати під -DartifactId=YOUR_ARTIFACT_IDчас запуску mvn install, лише пропозиція :)
JimLohse

@JimLohse спасибі, не соромтесь додавати заголовок "редагувати" :)
VdeX

9

Артефакт - це JAR або щось, що ви зберігаєте у сховищі. Мейвен отримує їх і створює ваш код.


8

Для вирівнювання процес збирання складається як набір артефактів. До артефактів належать:

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

Артефакти живуть у сховищах.


4

зазвичай ми говоримо про Maven Terminology про групу Id, Artifact Id та Snapshot Version

Ідентифікатор групи: ідентифікація групи проекту Ідентифікатор артефакту: ідентифікація проекту Знімок версії: версія, що використовується проектом.

Артефакт - це не що інше, як певний файл, такий як Jar, War, Ear ....

просто говорить, що Артефакти - це не що інше, як пакунки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.