2010-03-21 24 views
247

Tạo tác là gì và tại sao Maven cần nó?Tạo tác Maven là gì?

+3

Tìm hiểu thêm về khái niệm Maven tại đây: http://tshikatshikaaa.blogspot.nl/2012/05/introduction-to-maven-concepts-crash.html – JVerstry

+1

btw Bạn có thể xem bảng chú giải Apache Maven chính thức cho định nghĩa về [ * Artifact *] (http://maven.apache.org/glossary.html#Artifact) – informatik01

+1

Không có câu trả lời nào trong số này hoàn tất. Bạn có thể thấy điều này chỉ bằng cách [duyệt một kho lưu trữ Maven] (http://search.maven.org/#browse|842264825). Một tạo phẩm rõ ràng là một thư mục * đáp ứng một số ràng buộc, ví dụ: nó phải chứa một tệp có tên là "maven-metadata.xml' và một tệp có tên là" - .pom'. Cả hai tệp đó đều có một số lược đồ và ngữ nghĩa không có giấy tờ. – jameshfisher

Trả lời

235

Tạo phẩm là một tệp, thường là một tệp JAR, được triển khai tới kho lưu trữ Maven.

Xây dựng Maven tạo ra một hoặc nhiều hiện vật, chẳng hạn như JAR được biên dịch và JAR "nguồn".

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

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

+4

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

+2

@davidblaine: Tôi sẽ không nói như thế. Thủ tục xây dựng tạo ra các tạo tác. Đây có thể là một tệp jar, vâng. Tệp jar sau đó là một tạo phẩm xây dựng. Nhưng bạn không bao giờ nói về một ví dụ "Joda artifact" (trừ khi bạn đang thảo luận về quy trình xây dựng Joda). Các từ ngữ là khá "joda jar". Khi đề cập đến Joda trong một dự án, bạn thích nói về một "phụ thuộc Joda". – sorencito

+35

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

8

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

7

Để quạ, quá trình xây dựng được sắp xếp thành một tập hợp các hiện vật. Các hiện vật bao gồm:

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

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

84

Trong thuật ngữ phần mềm chung, "artifact" là thứ được sản xuất 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 hay tệp thi hành.

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

+0

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 là Người dùng, sẽ" ... Đây có giống như tạo tác mà bạn đã đề cập không? –

+0

@davidblaine - không chính xác, câu đó sử dụng từ ngữ một ý nghĩa tổng quát hơn. –

21

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

An artifact trong maven là tài nguyên được tạo bởi dự án maven. Mỗi dự án maven có thể có chính xác một artifact như 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 phẩm, cách chạy thử nghiệm đơn vị, v.v. Thường là một dự án phần mềm được xây dựng với maven bao gồm nhiều dự án quạ xây dựng các đồ tạo tác (ví dụ: chum) 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 

Hiện vật Maven không giới hạn tài nguyên java. Bạn có thể tạo bất kỳ tài nguyên nào bạn cần. Ví dụ. tài liệu, dự án-trang web, lưu trữ zip, thư viện gốc, v.v.

Mỗi dự án maven có một số nhận dạng duy nhất phù hợp với [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 đó là pom.xml bằng cách sử dụng mã định danh nêu trên. Maven sau đó tự động giải quyết các phụ thuộc khi xây dựng được kích hoạt.Các hiện vật của các dự án bắt buộc sau đó được tải hoặc từ địa phương 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.

20

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 phẩm Maven, các tạo phẩm của trình quản lý kho lưu trữ và sau đó có Maven Artifact s.

Tạo tác Maven giống như các bình luận viên/người trả lời khác nói rằng: đó là một thứ bị nhổ ra bằng cách xây dựng một dự án Maven. Đó có thể là tệp .jar hoặc tệp .war hoặc tệp .zip hoặc .dll hoặc bạn có điều gì.

Tạo phẩm trình quản lý kho lưu trữ là một thứ được quản lý bởi người 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 có hiệu năng cao cho các tệp thực thi và thư viện phần mềm. Trình quản lý kho lưu trữ không quan tâm đến các tạo phẩm của nó đến từ đâu (có thể chúng đến từ một bản xây dựng Maven, hoặc một tệp cục bộ, hoặc một bản dựng Ant, hoặc một trình biên dịch bằng tay ...).

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

Để đặt nó tất cả cùng nhau:

  • dự án Maven của bạn có thể phụ thuộc vào nhiều Artifact s bằng cách <dependency> phần tử của nó.
  • Maven tương tác với người quản lý kho lưu trữ để giải quyết các tệp Artifact đó thành tệp bằng cách hướng dẫn người quản lý kho lưu trữ một số trình tạo quản lý kho lưu trữ tương ứng với nội bộ Artifact s.
  • 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 phẩm Maven. Bạn có thể chọn "biến điều này thành" tạo tác 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 trình quản lý kho chứa đủ thông tin điều phối 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ữ .

Hy vọng điều đó sẽ hữu ích.

+0

+1 để biết thông tin mới về chủ đề cũ! Sửa lỗi "repoository" mặc dù đôi khi poo có thể là từ đúng haha ​​... mọi người đều nói "artifact" là jar thực tế, có thể hữu ích khi 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 lọ là những gì để nhập cho '-DartifactId = YOUR_ARTIFACT_ID', đúng không? Tên tệp jar đầy đủ có phiên bản và .jar? Có vẻ là 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âu trả lời khác nhận được gần với điều này nhưng tôi nghĩ rằng bạn tốt nhất. – JimLohse

3

thường chúng ta nói chuyện Maven ngữ về Nhóm Id, Id Artifact và Snapshot Version

Id Nhóm

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

Artifact là gì, nhưng một số tập tin kết quả như Jar, chiến tranh, tai ....

chỉ đơn giản nói Artifacts là gì, nhưng các gói.

12

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

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

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

Câu trả lời đơn giản cho một câu hỏi đơn giản :)

+0

Câu trả lời hay, như tôi đã nhận xét về [câu trả lời khác] (http://stackoverflow.com/a/20984861/3255525), làm cho nó rõ ràng những gì chúng ta phải gõ vào '-DartifactId = YOUR_ARTIFACT_ID' khi chạy mvn install, chỉ một gợi ý :) – JimLohse

+0

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

0

Hiện vật được đặt trong kho lưu trữ giả tạo. Các kho lưu trữ đó không chỉ chứa các tạo phẩm, mà chúng còn tổ chức các tạo phẩm để dễ dàng truy cập. Điều này bao gồm việc sắp xếp chúng theo phiên bản, vì vậy bạn có thể yêu cầu một phiên bản cụ thể của một tạo phẩm và nhận nó, thay vì phiên bản cũ hơn (hoặc có thể mới hơn) của cùng một tạo tác đó.

Một vật thường được thể hiện dưới hình thức hai tập tin:

  • Các nội dung thực tế, chẳng hạn như một JAR
  • Một tập tin siêu dữ liệu, kết hợp với các JAR, có thông tin về “phụ thuộc bắc cầu ”(Ví dụ, các hiện vật khác mà tác phẩm này phụ thuộc vào)”

Maven được sử dụng để làm cho chúng khả dụng cho các ứng dụng của chúng tôi.

Các vấn đề liên quan