Maven artefaktı nedir?


342

Eser nedir ve Maven neden buna ihtiyaç duyar?


3
Maven kavramları hakkında daha fazla bilgi için: tshikatshikaaa.blogspot.nl/2012/05/…
Jérôme Verstrynge

1
btw Bir Artefakt
informatik01

1
Bu cevapların hiçbiri tam değil. Bunu sadece bir Maven deposuna göz atarak görebilirsiniz . Bir yapı, görünüşe göre bazı kısıtlamaları karşılayan bir dizindir , örneğin adlı maven-metadata.xmlbir dosya ve adlı bir dosya içermelidir <artifactId>-<version>.pom. Bu dosyaların her ikisinin de belgelenmemiş şeması ve semantiği vardır.
jameshfisher

Yanıtlar:


303

Bir yapı, bir Maven deposuna dağıtılan bir dosyadır, genellikle bir JAR'dır.

Maven yapısı derlenmiş JAR ve "kaynaklar" JAR gibi bir veya daha fazla eser üretir.

Her yapay nesnenin bir grup kimliği (genellikle com.example.foo gibi ters çevrilmiş bir alan adı), yapay bir kimlik (yalnızca bir ad) ve bir sürüm dizesi vardır. Üçü birlikte eseri benzersiz bir şekilde tanımlar.

Bir projenin bağımlılıkları yapay olarak belirtilir.


5
Bir eser temelde bir JAR dosyası mıdır? Peki, joda zaman kavanoz dosyası bir joda artefakt denilebilir, hazırda bekleme kavanoz hazırda bekleme artefaktı vb denebilir?
david blaine

47
Bir yapının gerçekte ne olduğunu düşünün. Mısırlılar çanak çömlek gibi harika eserler yarattılar. Ancak, elinizde bir Mısır kasesi tutuyorsanız, bir eser (gerçek) olduğu gerçeğini tartışmadıkça, onu bir "eser" olarak adlandırmazsınız. Buna bir kase denir. Kaseden yediler. Eserin dışında yemek yemediler.
cbmeeks

3
Bence @cbmeeks'in elde ettiği şey, "eser" bir "şey" için bir isim değil , derleme sürecinde bir rol . Maven üretiyorsa ve onu tanımlaması için özel Maven koordinatları verilirse, her şey bir "eser" olarak sınıflandırılabilir .
Garret Wilson

"Com.example: mylibrary: 1.0.0" (groupId: artifactId: version) adında bir şeyim varsa, aşağıdakilerden biri bir eser olan bir kavanoz, bir pom ve bir kaynak kavanozdan oluşur: 1. her dosya (pom, kavanoz, kaynak kavanoz) ayrı bir eserdir; 2. aynı olan dosya grubu (groupId: artifactId: version) tek bir artefakt oluşturur; 3. başka bir şey?
Laurence Gonsalves

Sınıf adı verilen grup kimliği ve yapıtı nasıl elde edeceğinizi açıklamıyorsunuz. Downvote
Philip Rego

114

Genel yazılım terimleriyle, " artefakt ", yazılımla ilgili belgeler veya yürütülebilir bir dosya olsun, yazılım geliştirme süreci tarafından üretilen bir şeydir.

Maven terminolojisinde, yapay maven yapı elde edilen çıktının, genellikle a, jarya da warya da yürütülebilir dosya. Maven'deki eserler, groupId, artifactId ve versiyonun bir koordinat sistemi ile tanımlanır. Maven kullanır groupId, artifactIdve versionyapı için gerekli bağımlılıkları (genellikle diğer kavanoz dosyaları) belirlemek ve kod çalıştırmasına.


Kitabım "Bu çevrimiçi uygulamanın temel yapay yapısı Kullanıcı adında bir Java sınıfı olacak" diyor ki ... "Bu, bahsettiğiniz yapı ile aynı mı?
david blaine

@davidblaine - tam olarak değil, bu cümle daha genel bir anlam kullanır.
Ken Liu

27

Bunun eski bir konu olduğunu biliyorum ama birkaç nüans eklemek istedim.

Maven eserleri, depo yöneticisi eserleri ve ardından Maven Artifacts.

Bir Maven eseri, diğer yorumcuların / yanıtlayanların söylediği gibidir: bir Maven projesi inşa ederek tüküren bir şeydir. Bu bir .jardosya ya da .wardosya ya da .zipdosya ya da a .dllya da sizin neyiniz olabilir.

Havuz yöneticisi yapay yapısı, bir havuz yöneticisi tarafından yönetilen bir şeydir. Havuz yöneticisi temel olarak yazılım yürütülebilir ve kütüphaneleri için yüksek performanslı bir adlandırma hizmetidir. Havuz yöneticisi, eserlerinin nereden geldiğini umursamıyor (belki bir Maven derlemesinden veya yerel bir dosyadan, bir Ant derlemesinden veya elle derlemeden gelmişlerdir ...).

Maven Artifact, bir depo yöneticisi tarafından bir depo yöneticisi yapısına aktarılan "isim" türünü temsil eden bir Java sınıfıdır. Bu anlamda kullanıldığında, bir Artifactgibi parçadan oluşur sadece övmek adıdır groupId, artifactId, version, scope, classifiervb.

Hepsini bir araya getirmek için:

  • Maven projeniz muhtemelen öğeleri Artifactaracılığıyla birkaç s'ye bağlıdır <dependency>.
  • Maven Artifact, depo yöneticisine, dahili yöneticilere karşılık gelen bazı depo yöneticisi yapılarını göndermesini söyleyerek bu dosyaları dosyalara çözmek için bir depo yöneticisi ile etkileşime girer Artifact.
  • Son olarak, karardan sonra Maven projenizi oluşturur ve bir Maven artefaktı üretir. İstediğiniz herhangi bir aracı kullanarak bir havuz yöneticisi yapısını "dönüştürmeyi" seçebilirsiniz, bunu diğer yöneticilere havuz yöneticisinden istediklerinde bulabilecekleri yeterli koordinasyon bilgisiyle havuz yöneticisine gönderebilirsiniz .

Umarım yardımcı olur.


Eski iş parçacığı hakkında yeni bilgi için +1 teşekkürler! Yazım hatası "repoository" düzeltmek zaman zaman kaka doğru kelime haha ​​olabilir ... herkes "eser" gerçek kavanoz olduğunu söylüyor, örneğin, kullanırken mvn install, insanlar bu girişe ne koyacağınızı anlamaya çalışıyor. Yani kavanozun tam adı ne girecek -DartifactId=YOUR_ARTIFACT_ID, doğru mu? Sürüm ve .jar ile tam jar dosya adı? Söylediğiniz gibi görünüyor, ancak bazılarının gerçekten açık olmasına yardımcı olacaktır. Diğer cevaplar buna yaklaşıyor ama en iyi olduğunu düşündüm.
JimLohse

23

Maven yapısını projelerde organize ediyor.

Bir artifactmaven bir maven projesi tarafından oluşturulan bir kaynaktır. Her maven projesi tam olarak artifacta jar, war, ear, vb
. Olabilir . Projenin yapılandırma dosyası "pom.xml", yapının nasıl oluşturulduğunu, birim testlerinin nasıl yürütüldüğünü vb. ) oluşturur.
Örneğin

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 eserleri java kaynakları ile sınırlı değildir. İhtiyacınız olan kaynağı üretebilirsiniz. Örneğin dokümantasyon, proje sahası, zip arşivleri, yerel kütüphaneler vb.

Her maven projesinde benzersiz bir tanımlayıcı vardır [groupId, artifactId, version]. Bir maven projesi başka bir projenin kaynaklarını gerektirdiğinde pom.xml, yukarıda belirtilen tanımlayıcıyı kullanarak bir bağımlılık yapılandırılır . Maven daha sonra bir yapı tetiklendiğinde bağımlılıkları otomatik olarak çözer. Daha sonra gerekli projelerin eserleri ya repositorykullanıcınızın evinde basit bir dizin olan yerelden ya da sizin belirttiğiniz diğer (uzak) depolardan yüklenir pom.xml.


19

S.Maven'de Artefakt Nedir?
ANS: YAPAY bir KAVRAM, (SAVAŞ veya KULAK), ama aynı zamanda başka bir şey olabilir. Her eserde,

  • bir grup kimliği (com.your.package gibi),
  • bir artefakt kimliği (sadece bir ad) ve
  • bir sürüm dizesi.
    Üçü birlikte eseri benzersiz bir şekilde tanımlar.

S. Maven'in neden onlara ihtiyacı var?
Ans: Maven, bunları uygulamalarımız için kullanılabilir hale getirmek için kullanılır.


Güzel cevap, diğer yanıta yorum -DartifactId=YOUR_ARTIFACT_IDyaparken, mvn install çalıştırırken yazmamız gerekenleri açıkça belirtin, sadece bir öneri :)
JimLohse

@JimLohse teşekkürler, "edit" başlığı ile eklemek için çekinmeyin :)
VdeX

9

Bir yapay yapı bir JAR veya bir depoda sakladığınız bir şeydir. Maven onları çıkarır ve kodunu oluşturur.


8

Maven için, oluşturma işlemi bir dizi yapay olarak düzenlenir. Eserler şunları içerir:

  1. Maven'i oluşturan eklentiler.
  2. Kodunuzun bağlı olduğu bağımlılıklar.
  3. Yapınızın ürettiği her şey, başka bir şey tarafından tüketilebilir.

Eserler depolarda yaşar.


4

Genellikle Maven Terminolojisinden Grup Kimliği, Eser Kimliği ve Anlık Sürüm hakkında konuşuyoruz

Grup Kimliği: proje grubunun kimliği Artefakt Kimliği: proje kimliği Anlık sürüm: proje tarafından kullanılan sürüm.

Eser Jar, War, Ear gibi ortaya çıkan bir dosyadan başka bir şey değildir ....

Basit bir şekilde yapıtların paketlerden başka bir şey olmadığını söylüyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.