Bao bì của pomom trong maven là gì?


175

Tôi đã được giao một dự án maven để biên dịch và được triển khai trên máy chủ tomcat. Tôi chưa bao giờ sử dụng maven trước ngày hôm nay, nhưng tôi đã googling khá nhiều. Có vẻ như các pom.xmltệp cấp cao nhất trong dự án này có loại bao bì được đặt là pom.

Tôi phải làm gì sau khi mvn installứng dụng này được triển khai? Tôi đã mong đợi để có thể tìm thấy một wartập tin ở đâu đó hoặc một cái gì đó, nhưng tôi đoán rằng tôi đang tìm sai chỗ hoặc thiếu một bước.


3
mvn install - cái này được sử dụng để cài đặt artifact của bạn (jar, war, Ear) trong kho lưu trữ cục bộ của bạn (thường là ~ / .m2 / kho lưu trữ
direcotry

Câu trả lời:


148

pomvề cơ bản là một thùng chứa các mô hình con, mỗi mô hình con được đại diện bởi một thư mục con trong cùng thư mục pom.xmlvới pombao bì.

Ở đâu đó, được lồng trong cấu trúc dự án, bạn sẽ tìm thấy các tạo tác (mô-đun) với warbao bì. Maven thường xây dựng mọi thứ thành các /targetthư mục con của mỗi mô-đun. Vì vậy, sau khi mvn installxem xét targetthư mục con trong một mô-đun với warbao bì.

Tất nhiên:

$ find . -iname "*.war"

hoạt động tốt như nhau ;-).


45

bao bì pom chỉ đơn giản là một đặc điểm kỹ thuật nói rằng tạo phẩm chính không phải là chiến tranh hay bình, mà là chính pom.xml.

Thông thường, nó được sử dụng cùng với "các mô-đun" thường được chứa trong các thư mục con của dự án đang đề cập; tuy nhiên, nó cũng có thể được sử dụng trong một số trường hợp nhất định trong đó không có ý nghĩa nhị phân chính nào được xây dựng, tất cả các tạo tác quan trọng khác đã được tuyên bố là tạo tác thứ cấp

Hãy nghĩ về một dự án "tài liệu", tạo phẩm chính có thể là một tệp PDF, nhưng nó đã được xây dựng và công việc tuyên bố nó là một tạo phẩm thứ cấp có thể được mong muốn qua cấu hình để cho maven biết cách xây dựng một tệp PDF không cần biên soạn.


Một ví dụ khác mà tôi có thể nghĩ về các dòng tương tự như pom project ==> lớp trừu tượng và mô-đun bên trong nó ==> lớp cụ thể.
bharatj

22

Bao bì pomđược sử dụng trong các dự án tổng hợp các dự án khác và trong các dự án chỉ có đầu ra hữu ích là một tạo phẩm đính kèm từ một số plugin. Trong trường hợp của bạn, tôi đoán rằng pom cấp cao nhất của bạn bao gồm <modules>...</modules>tổng hợp các thư mục khác và đầu ra thực tế là kết quả của một trong những thư mục khác (có thể là phụ). Nó sẽ, nếu được mã hóa hợp lý cho mục đích này, có một bao bì war.


1
Ý bạn là gì khi "chỉ có đầu ra hữu ích là một tạo phẩm đính kèm từ một số plugin"?
omjego

9

Để trả lời câu hỏi của bạn khi bạn thực hiện mvn: install , maven sẽ tạo một tạo phẩm được đóng gói dựa trên ( thuộc tính đóng gói trong pom.xml), Sau khi bạn chạy cài đặt maven của mình, bạn có thể tìm tệp với phần mở rộng .package

  • Trong thư mục đích của không gian làm việc của dự án
  • Ngoài ra, nơi kho lưu trữ cục bộ maven 2 của bạn đang tìm kiếm ( .m2 / resp Storage ) trên hộp của bạn, Artifact của bạn được liệt kê trong kho .m2 trong thư mục ( groupId / artifactId / artifactId-version.packaging )
  • Nếu bạn xem trong thư mục, bạn sẽ tìm thấy tệp tiện ích mở rộng được đóng gói và cả phần mở rộng pom (phần mở rộng pom về cơ bản là pom.xml được sử dụng để tạo gói này)
  • Nếu dự án maven của bạn là đa mô-đun, mỗi mô-đun sẽ có hai tệp như được mô tả ở trên, ngoại trừ dự án cấp cao nhất sẽ chỉ có một pom

8

Đóng gói một vật phẩm là POM có nghĩa là nó có vòng đời rất đơn giản

package -> install -> deploy

http://maven.apache.org/guides/int sinhtion / inttiontion-to-the-lifecycle.html

Điều này hữu ích nếu bạn đang triển khai tệp pom.xml hoặc dự án không phù hợp với các loại bao bì khác.

Chúng tôi sử dụng bao bì pom cho nhiều dự án của chúng tôi và liên kết các giai đoạn và mục tiêu bổ sung khi thích hợp.

Ví dụ: một số ứng dụng của chúng tôi sử dụng:

prepare-package -> test -> package -> install -> deploy

Khi bạn mvn cài đặt ứng dụng, nó sẽ thêm nó vào kho lưu trữ .m2 cục bộ của bạn. Để xuất bản ở nơi khác, bạn sẽ cần thiết lập thông tin quản lý phân phối chính xác. Bạn cũng có thể cần sử dụng plugin trình trợ giúp trình tạo maven, nếu các tạo phẩm không được Maven tự động đính kèm.


6

Tôi đề nghị xem ví dụ kinh điển tại: http://maven.apache.org/guides/getting-started/index.html#How_do_I_build_more_than_one_project_at_once

Ở đây, ứng dụng web của tôi là dự án web, phụ thuộc vào mã tại dự án ứng dụng của tôi. Vì vậy, để kết hợp hai dự án trong một, chúng ta có pom.xml cấp cao nhất có đề cập đến các dự án (mô-đun theo thuật ngữ maven) cuối cùng sẽ được gói. Pom.xml cấp cao nhất như vậy có thể sử dụng bao bì pom.

my-webapp có thể có bao bì chiến tranh và có thể có sự phụ thuộc vào ứng dụng của tôi. ứng dụng của tôi có thể có bao bì jar.


2

Trường hợp sử dụng thực tế

Tại một công ty nặng Java, chúng tôi đã có một dự án python cần vào kho lưu trữ tạo tác Nexus. Python không thực sự có các tạo phẩm, vì vậy chỉ cần muốn .tar hoặc .zip các tệp python và đẩy. Repo đã tích hợp maven, vì vậy chúng tôi đã sử dụng trình <packaging>pom</packaging>thiết kế với plugin lắp ráp maven để đóng gói dự án python như một .zipvà tải nó lên.

Các bước được nêu trong bài SO này


1

Bao bì đóng gói của Pháp không có gì khác ngoài hộp đựng, trong đó có các gói / mô-đun khác như bình, chiến tranh và tai.

nếu bạn thực hiện bất kỳ thao tác nào trên gói / thùng chứa bên ngoài như cài đặt biên dịch sạch mvn. sau đó các gói / mô-đun bên trong cũng có được cài đặt biên dịch sạch.

không cần thực hiện một thao tác riêng cho từng gói / mô-đun.


1

https://maven.apache.org/pom.html

Loại bao bì được yêu cầu là pom cho các dự án cha mẹ và tổng hợp (đa mô-đun). Các loại này xác định các mục tiêu ràng buộc với một tập hợp các giai đoạn vòng đời. Ví dụ: nếu bao bì là jar, thì giai đoạn gói sẽ thực hiện mục tiêu jar: jar. Nếu bao bì là pom, mục tiêu được thực hiện sẽ là trang web: đính kèm mô tả


0

POM (Project Object Model) không có gì ngoài kịch bản tự động hóa để xây dựng dự án, chúng ta có thể viết kịch bản tự động hóa bằng XML, các tệp kịch bản xây dựng được đặt tên khác nhau trong các công cụ Tự động hóa khác nhau

giống như chúng ta gọi build.xml trong ANT, pom.xml trong MAVEN

MAVEN có thể đóng gói bình, chiến tranh, tai và POM, điều mới cho tất cả chúng ta

nếu bạn muốn kiểm tra POM.XML LÀ GÌ

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.