Cổ vật Maven là gì?


342

Cổ vật là gì và tại sao Maven cần nó?


3
Tìm hiểu thêm về các khái niệm Maven tại đây: tshikatshikaaa.blogspot.nl/2012/05/ Khăn
Jérôme Verstrynge

1
btw Bạn có thể thấy thuật ngữ Apache Maven chính thức cho định nghĩa của một Artifact
informatik01

1
Không có câu trả lời nào trong số này là hoàn chỉnh. Bạn có thể thấy điều này chỉ bằng cách duyệt một kho lưu trữ Maven . Một tạo phẩm rõ ràng là một thư mục thỏa mãn một số ràng buộc, ví dụ: nó phải chứa một tệp được gọi maven-metadata.xmlvà một tệp được gọi <artifactId>-<version>.pom. Cả hai tệp này đều có một số lược đồ và ngữ nghĩa không có giấy tờ.
jameshfisher

Câu trả lời:


303

Artifact là một tệp, thường là JAR, được triển khai vào kho lưu trữ Maven.

Bản dựng Maven tạo ra một hoặc nhiều tạo phẩm, chẳng hạn như JAR được biên dịch và JAR "nguồn".

Mỗi tạo phẩm có một ID nhóm (thường là một tên miền đảo ngược, như com.example.foo), ID tạo tác (chỉ một tên) và một chuỗi phiên bản. Cả ba cùng xác định duy nhất hiện vật.

Các phụ thuộc của dự án được chỉ định là các tạo phẩm.


5
Là một tạo tác về cơ bản là một tệp JAR? Vì vậy, tập tin jar thời gian joda có thể được gọi là một tạo tác joda, jar hibernate có thể được gọi là tạo tác hibernate vv?
David Blaine

47
Hãy nghĩ về những gì một tạo tác thực sự là. Người Ai Cập đã tạo ra những đồ tạo tác tuyệt vời như đồ gốm. Nhưng, nếu bạn đang cầm một chiếc bát Ai Cập trong tay, bạn sẽ không coi đó là một "cổ vật" trừ khi bạn đang thảo luận về sự thật rằng nó là một vật phẩm (thực tế). Bạn sẽ coi nó như một cái bát. Họ ăn hết bát. Họ đã không ăn hết cổ vật.
cbmeek

3
Tôi nghĩ rằng những gì @cbmeek nhận được là "tạo tác" không phải là tên của một "thứ", nó là một vai trò trong quá trình xây dựng. Bất cứ điều gì cũng có thể được phân loại là "tạo tác" nếu Maven tạo ra nó và nó được cung cấp tọa độ Maven đặc biệt để xác định nó.
Garret Wilson

Nếu tôi có một cái gì đó gọi là "com.example: myl Library: 1.0.0" (groupId: artifactId: phiên bản), bao gồm một jar, pom và jar nguồn, sau đây là một tạo phẩm: 1. mỗi tệp (pom, jar, jar jar) là một tạo tác riêng biệt; 2. tập hợp các tệp chia sẻ cùng (groupId: artifactId: phiên bản) tạo thành một tạo tác duy nhất; 3. cái gì khác?
Laurence Gonsalves

Bạn không giải thích làm thế nào để có được nhóm và artifactid được đặt tên của lớp. Downvote
Philip Rego

114

Theo thuật ngữ phần mềm nói chung, " tạo tác " là thứ được tạo ra bởi quy trình phát triển phần mềm, cho dù đó là tài liệu liên quan đến phần mềm hoặc tệp thực thi.

Trong thuật ngữ Maven, tạo phẩm là kết quả đầu ra của bản dựng maven, thường là một jarhoặc warhoặc tệp thực thi khác. Các tạo phẩm trong maven được xác định bởi một hệ tọa độ gồm groupId, artifactId và phiên bản. Maven sử dụng groupId, artifactIdversionđể xác định phụ thuộc (thường là file jar khác) cần thiết để xây dựng và chạy mã của bạn.


Cuốn sách của tôi nói rằng "tạo phẩm cốt lõi của ứng dụng trực tuyến này sẽ là một lớp Java có tên Người dùng," ... Đây có giống với tạo phẩm mà bạn đã đề cập không?
David Blaine

@davidblaine - không chính xác, câu đó sử dụng từ này có nghĩa chung hơn.
Ken Liu

27

Tôi biết đây là một chủ đề cổ xưa nhưng tôi muốn thêm một vài sắc thái.

Có các tạo tác Maven, các tạo phẩm của trình quản lý kho lưu trữ và sau đó có các Maven Artifact.

Một tạo tác của Maven cũng giống như những người bình luận / trả lời khác nói: đó là một điều được nói ra bằng cách xây dựng một dự án Maven. Đó có thể là một .jartập tin, hoặc một .wartập tin, hoặc một .ziptập tin, hoặc một .dllhoặc những gì có bạn.

Một tạo phẩm của trình quản lý kho lưu trữ là một thứ được quản lý bởi một trình quản lý kho lưu trữ. Trình quản lý kho lưu trữ về cơ bản là một dịch vụ đặt tên hiệu suất cao cho các thư viện và phần mềm thực thi phần mềm. Người quản lý kho lưu trữ không quan tâm các tạo phẩm của nó đến từ đâu (có thể chúng đến từ bản dựng Maven, hoặc tệp cục bộ hoặc bản dựng Ant hoặc phần tổng hợp bằng tay ...).

Maven Artifactlà một lớp Java đại diện cho loại "tên" được trình quản lý kho lưu trữ thành một trình quản lý kho lưu trữ. Khi được sử dụng theo nghĩa này, một Artifactchỉ là một tên tôn vinh tạo thành từ các bộ phận như groupId, artifactId, version, scope, classifiervà vân vân.

Để kết hợp tất cả lại với nhau:

  • Dự án Maven của bạn có thể phụ thuộc vào một số Artifacts bằng các <dependency>yếu tố của nó .
  • Maven tương tác với trình quản lý kho lưu trữ để phân giải các Artifacttệp đó thành các tệp bằng cách hướng dẫn trình quản lý kho lưu trữ gửi cho nó một số tạo phẩm của trình quản lý kho tương ứng với các tệp bên trong Artifact.
  • Cuối cùng, sau khi giải quyết, Maven xây dựng dự án của bạn và tạo ra một tạo tác Maven. Lần lượt, bạn có thể chọn "biến điều này thành" một trình quản lý kho lưu trữ bằng cách sử dụng bất kỳ công cụ nào bạn thích, gửi nó đến trình quản lý kho lưu trữ với đủ thông tin phối hợp mà người khác có thể tìm thấy khi họ yêu cầu người quản lý kho lưu trữ.

Mong rằng sẽ giúp.


+1 cho thông tin mới về chủ đề cũ cảm ơn! Sửa lỗi đánh máy "repoosective" mặc dù đôi khi poo có thể là từ đúng haha ​​... mọi người đều nói "tạo tác" là bình thực sự, có thể hữu ích để cập nhật câu trả lời của bạn để chỉ ra rằng khi sử dụng, ví dụ mvn install, mọi người đang cố gắng tìm ra những gì để đưa vào mục đó. Vì vậy, tên đầy đủ của bình là những gì để nhập -DartifactId=YOUR_ARTIFACT_ID, phải không? Tên tệp jar đầy đủ với phiên bản và .jar? Có vẻ như những gì bạn đang nói nhưng sẽ giúp một số người thực sự rõ ràng. Các câu trả lời khác gần với điều này nhưng tôi nghĩ tốt nhất của bạn.
JimLohse

23

Maven tổ chức xây dựng của nó trong các dự án.

Một artifacttrong maven là một tài nguyên được tạo ra bởi một dự án maven. Mỗi dự án maven có thể có chính xác một artifactnhư một jar, war, ear, v.v.
Tệp cấu hình của dự án "pom.xml"mô tả cách tạo tác được tạo ra, cách chạy thử nghiệm đơn vị, v.v. ) tạo thành sản phẩm.
Ví dụ

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

Các tạo phẩm của Maven không giới hạn tài nguyên java. Bạn có thể tạo bất cứ tài nguyên nào bạn cần. Ví dụ: tài liệu, trang web dự án, kho lưu trữ zip, thư viện gốc, v.v.

Mỗi dự án maven có một định danh duy nhất cho phép [groupId, artifactId, version]. Khi một dự án maven yêu cầu tài nguyên của một dự án khác, một phụ thuộc được cấu hình trong đó pom.xmlsử dụng mã định danh được đề cập ở trên. Maven sau đó tự động giải quyết các phụ thuộc khi kích hoạt bản dựng. Các tạo phẩm của các dự án bắt buộc sau đó được tải từ cục bộ repository, là một thư mục đơn giản trong nhà của người dùng của bạn hoặc từ các kho lưu trữ (từ xa) khác được chỉ định trong bạn pom.xml.


19

Q. Artifact trong maven là gì?
ANS: ARTIFACT là một JAR, (WAR hoặc EAR), nhưng nó cũng có thể là một cái gì đó khác. Mỗi cổ vật có,

  • ID nhóm (như com.your.package),
  • ID tạo tác (chỉ một tên) và
  • một chuỗi phiên bản.
    Cả ba cùng xác định duy nhất hiện vật.

Q: Tại sao Maven cần chúng?
Trả lời: Maven được sử dụng để cung cấp chúng cho các ứng dụng của chúng tôi.


Câu trả lời hay, như tôi đã nhận xét về câu trả lời khác , hãy nói rõ những gì chúng ta phải nhập vào -DartifactId=YOUR_ARTIFACT_IDkhi chạy cài đặt mvn, chỉ là một gợi ý :)
JimLohse

@JimLohse cảm ơn, xin vui lòng thêm với tiêu đề "chỉnh sửa" :)
VdeX

9

Một tạo phẩm là một JAR hoặc một cái gì đó mà bạn lưu trữ trong một kho lưu trữ. Maven lấy chúng ra và xây dựng mã của bạn.


8

Để maven, quá trình xây dựng được sắp xếp như một bộ tạo tác. Hiện vật bao gồm:

  1. Các plugin tạo nên Maven chính nó.
  2. Phụ thuộc mà mã của bạn phụ thuộc vào.
  3. Bất cứ thứ gì mà bản dựng của bạn tạo ra có thể, lần lượt được tiêu thụ bởi thứ khác.

Hiện vật sống trong kho.


4

thông thường chúng ta nói về thuật ngữ Maven về Id nhóm, Id Artifact và Phiên bản chụp nhanh

Id nhóm: danh tính của nhóm dự án Artifact Id: danh tính của dự án Phiên bản chụp nhanh: phiên bản được sử dụng bởi dự án.

Artifact không có gì ngoài một số tệp kết quả như Jar, War, Ear ....

nói đơn giản là Artifacts không có gì ngoài các gói.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.