Co to jest artefakt Maven?


342

Co to jest artefakt i dlaczego Maven go potrzebuje?


3
Więcej informacji na temat koncepcji Maven tutaj: tshikatshikaaa.blogspot.nl/2012/05/…
Jérôme Verstrynge

1
btw Oficjalny słownik Apache Maven do definicji artefaktu
informatik01

1
Żadna z tych odpowiedzi nie jest kompletna. Możesz to zobaczyć po prostu przeglądając repozytorium Maven . Artefakt jest najwyraźniej katalogiem spełniającym pewne ograniczenia, np. Musi zawierać plik o nazwie maven-metadata.xmli plik o nazwie <artifactId>-<version>.pom. Oba te pliki mają jakiś nieudokumentowany schemat i semantykę.
jameshfisher

Odpowiedzi:


303

Artefakt to plik, zwykle JAR, który jest wdrażany w repozytorium Maven.

Kompilacja Maven produkuje jeden lub więcej artefaktów, takich jak skompilowany plik JAR i plik JAR „źródła”.

Każdy artefakt ma identyfikator grupy (zwykle odwróconą nazwę domeny, taką jak com.example.foo), identyfikator artefaktu (tylko nazwa) i ciąg wersji. Trzy razem jednoznacznie identyfikują artefakt.

Zależności projektu są określone jako artefakty.


5
Czy artefakt jest w zasadzie plikiem JAR? Tak więc plik jar czasu Joda można nazwać artefaktem Joda, hibernację słoika można nazwać artefaktem hibernacji itp.?
David Blaine

47
Pomyśl o tym, czym naprawdę jest artefakt. Egipcjanie stworzyli wspaniałe artefakty, takie jak ceramika. Ale jeśli trzymasz egipską miskę w dłoni, nie nazwałbyś jej „artefaktem”, chyba że omawiałbyś fakt, że JEST to artefakt (fakt). Nazywasz to miską. Zjedli z miski. Nie jedli z artefaktu.
cbmeeks,

3
Myślę, że @cbmeeks ma na myśli to, że „artefakt” nie jest nazwą „rzeczy”, lecz rolę w procesie kompilacji. Wszystko może zostać zaklasyfikowane jako „artefakt”, jeśli Maven go wytworzy i otrzyma specjalne współrzędne Maven, aby go zidentyfikować.
Garret Wilson,

Jeśli mam coś o nazwie „com.example: mylibrary: 1.0.0” (groupId: artefactId: wersja), który składa się ze słoika, pom i słoika źródłowego, który z poniższych jest artefaktem: 1. każdy plik (pom, jar, source jar) to osobny artefakt; 2. Zbiór plików, które dzielą to samo (groupId: artefactId: wersja) tworzą pojedynczy artefakt; 3. coś jeszcze?
Laurence Gonsalves

Nie wyjaśniasz, jak uzyskać groupid i artefakt, biorąc pod uwagę nazwę klasy. Downvote
Philip Rego,

114

Ogólnie rzecz biorąc, „ artefakt ” to coś, co powstaje w procesie tworzenia oprogramowania, niezależnie od tego, czy jest to dokumentacja związana z oprogramowaniem, czy plik wykonywalny.

W terminologii Maven, artefakt jest Wynikiem z produkcji Maven ogólnie jarlub warlub innych plików wykonywalnych. Artefakty w maven są identyfikowane przez układ współrzędnych groupId, artefactId i wersji. Maven używa groupId, artifactIdoraz versionzidentyfikować współzależności (zazwyczaj inne pliki JAR) potrzebne do zbudowania i uruchomienia kodu.


Moja książka mówi: „głównym artefaktem tej aplikacji online będzie klasa Java o nazwie Użytkownik, która…” Czy to ten sam artefakt, o którym wspominałeś?
David Blaine

@davidblaine - nie do końca, to zdanie używa tego słowa w bardziej ogólnym znaczeniu.
Ken Liu

27

Wiem, że to starożytny wątek, ale chciałem dodać kilka niuansów.

Są artefakty Maven, artefakty menedżera repozytorium, a następnie są Maven Artifact.

Artefakt Maven jest taki, jak mówią inni komentatorzy / respondenci: jest to rzecz, która jest wypluwana poprzez budowanie projektu Maven. Może to być .jarplik, .warplik, .zipplik, a .dlllub cokolwiek innego .

Artefakt menedżera repozytorium jest rzeczą zarządzaną przez menedżera repozytorium. Menedżer repozytorium jest w zasadzie wysoce wydajną usługą nazewnictwa plików wykonywalnych i bibliotek oprogramowania. Menedżer repozytorium nie dba o to, skąd pochodzą artefakty (być może pochodzą one z kompilacji Maven, pliku lokalnego, kompilacji Ant lub kompilacji ręcznej ...).

Maven Artifactto klasa Java, która reprezentuje rodzaj „nazwy”, która jest odrywana przez menedżera repozytorium na artefakt menedżera repozytorium. Przy zastosowaniu w tym sensie, Artifacttylko uwielbione imię składa się z takich elementów jak: groupId, artifactId, version, scope, classifieri tak dalej.

Podsumowując:

  • Twój projekt Maven prawdopodobnie zależy od kilku Artifactsekund za pomocą jego <dependency>elementów.
  • Maven wchodzi w interakcję z menedżerem repozytorium w celu Artifactprzekształcenia tych plików w pliki, instruując menedżera repozytorium, aby wysłał mu artefakty menedżera repozytorium odpowiadające wewnętrznym Artifact.
  • Wreszcie po rozwiązaniu Maven tworzy projekt i wytwarza artefakt Maven. Możesz „przekształcić to w” artefakt menedżera repozytorium, z kolei za pomocą dowolnego narzędzia, które ci się podoba, wysyłając go do menedżera repozytorium z wystarczającą ilością informacji koordynujących, aby inni ludzie mogli go znaleźć, gdy poprosą o to menedżera repozytorium.

Mam nadzieję, że to pomaga.


+1 za nowe informacje o starym wątku dzięki! Napraw literówkę „repozytorium”, chociaż czasami kupa może być właściwym słowem haha ​​... wszyscy mówią, że „artefakt” jest faktycznym słoikiem, może być pomocne, aby zaktualizować swoją odpowiedź, aby wskazać, że na przykład mvn installludzie są próbując dowiedzieć się, co umieścić w tym wpisie. Więc, żeby podać pełną nazwę słoika -DartifactId=YOUR_ARTIFACT_ID, prawda? Pełna nazwa pliku jar z wersją i .jar? Wydaje się, że to, co mówisz, ale pomogłoby niektórym wyrazić się naprawdę jasno. Inne odpowiedzi zbliżają się do tego, ale myślałem, że twoje najlepiej.
JimLohse,

23

Maven organizuje swoje projekty wbudowane.

W artifactmaven to zasób generowany przez projekt maven. Każdy projekt maven może mieć dokładnie taki artifactjak jar, war, earitp
. Plik konfiguracyjny projektu "pom.xml"opisuje sposób budowania artefaktu, sposób przeprowadzania testów jednostkowych itp. Zwykle kompilacja projektu oprogramowania za pomocą maven składa się z wielu projektów maven, które budują artefakty (np. Słoiki ), które stanowią produkt.
Na przykład

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

Artefakty Maven nie są ograniczone do zasobów Java. Możesz wygenerować potrzebne zasoby. Np. Dokumentacja, strona projektu, archiwa zip, biblioteki natywne itp.

Każdy projekt maven ma unikalny identyfikator [groupId, artifactId, version]. Gdy projekt maven wymaga zasobów innego projektu, konfiguruje się zależność, w której pom.xmlwykorzystuje on wyżej wspomniany identyfikator. Następnie Maven automatycznie rozwiązuje zależności po uruchomieniu kompilacji. Artefakty wymaganych projektów są następnie ładowane albo z lokalnego repository, który jest prostym katalogiem w domu użytkownika, albo z innych (zdalnych) repozytoriów określonych w tobie pom.xml.


19

P: Co to jest Artefakt w maven?
ODPOWIEDŹ: ARTIFACT to Słoik (WOJNA lub UCHA), ale może to być także coś innego. Każdy artefakt ma

  • identyfikator grupy (jak com.your.package),
  • identyfikator artefaktu (tylko nazwa) oraz
  • ciąg wersji.
    Trzy razem jednoznacznie identyfikują artefakt.

P: Dlaczego Maven ich potrzebuje?
Odp .: Maven służy do udostępniania ich w naszych aplikacjach.


Ładna odpowiedź, ponieważ skomentowałem inną odpowiedź , wyraź wyraźnie, w co powinniśmy pisać -DartifactId=YOUR_ARTIFACT_IDpodczas instalacji mvn, tylko sugestia :)
JimLohse

@JimLohse dzięki, zachęcamy do dodania tytułu „edytuj” :)
VdeX

9

Artefakt to plik JAR lub coś, co przechowujesz w repozytorium. Maven wyciąga je i buduje kod.


8

Aby zrównać, proces kompilacji jest ułożony jako zestaw artefaktów. Artefakty obejmują:

  1. Wtyczki tworzące sam Maven.
  2. Zależności, od których zależy Twój kod.
  3. Wszystko, co produkuje twoja kompilacja, może z kolei zostać pochłonięte przez coś innego.

Artefakty żyją w repozytoriach.


4

zwykle mówimy terminologią Maven o identyfikatorze grupy, identyfikatorze artefaktu i wersji migawki

Identyfikator grupy: tożsamość grupy projektu Identyfikator artefaktu: tożsamość projektu Wersja migawki: wersja używana przez projekt.

Artefakt to nic innego, jak niektóre wynikowe pliki, takie jak Jar, War, Ear ....

po prostu mówi, że Artefakty to nic innego jak paczki.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.