2011-12-20 64 views
6

Tôi đang cân nhắc việc chuyển đổi dự án Maven mà tôi quản lý thành Apache-Ant/Ivy. Tôi cần kiểm soát nhiều hơn quá trình xây dựng và tôi rất thất vọng với Maven. Xin vui lòng không có ý kiến ​​về Maven lớn như thế nào. Câu hỏi của tôi là về Ivy.Ant/Ivy để xây dựng dự án

Tôi muốn thiết lập mẫu xây dựng Ant "chuẩn" mà sau này có thể được sử dụng cho các dự án khác có thay đổi tối thiểu.

Tôi sẽ thiết lập kho lưu trữ "doanh nghiệp" trung tâm nơi chúng tôi có thể đặt thư viện của bên thứ ba không có sẵn trong kho lưu trữ Maven công khai (ví dụ: thư viện thương mại, thư viện Sun, thư viện độc quyền, v.v.). Kho lưu trữ doanh nghiệp này sẽ có sẵn trên mạng LAN cục bộ của chúng tôi, nhưng có thể không có sẵn từ bên ngoài văn phòng.

Mỗi nhà phát triển sẽ có một kho lưu trữ riêng tư trong ~/.ivy/repository. Tôi muốn xây dựng Ant để tự động cập nhật kho lưu trữ riêng này với các phiên bản thư viện đã thay đổi từ kho lưu trữ doanh nghiệp.

Trong ~/.ivy/ant, tôi định đặt mô-đun "chuẩn" để bao gồm trong các dự án riêng lẻ build.xml tệp, sử dụng tác vụ include trong Ant 1.8. Các mô-đun này sẽ cung cấp những mục như ScalaClojure mục tiêu biên dịch với các phiên bản khác nhau cho các phiên bản Scala và Clojure khác nhau (ví dụ: scala-compile-2.9.1.xml, clojure-compile-1.3.xml, v.v.) Mô-đun xây dựng sẽ có sẵn trong kho lưu trữ doanh nghiệp và được cập nhật tự động trong kho lưu trữ riêng tư nếu họ thay đổi.

Mỗi dự án sẽ thực hiện theo một Maven cấu trúc tiêu chuẩn thư mục: ${project}/src/main/java, ${project}/target/classes vv

Trong quá khứ, tôi đã cố gắng sử dụng Ivy nhưng Ant xây dựng các file đã nhận được rất lớn (> 500 dòng cho mẫu xây dựng và khó quản lý/chỉnh sửa. Tôi hy vọng rằng bằng cách đặt các mục tiêu tiêu chuẩn trong các mô-đun xây dựng của riêng họ trong thư mục ~/.ivy/ant, tôi có thể tránh được sự phồng lên của mã đó.

Việc này có thể thực hiện được không? Tôi có cách xa cơ sở không? Tài liệu duy nhất tôi có thể tìm thấy trên Ivy là tại trang web Apache (http://ant.apache.org/ivy). Có tài liệu nào khác, bao gồm cả sách không?

+0

Tôi không nghĩ rằng, bạn sẽ cần kho riêng cho các thư viện. Ivy tự quản lý [cache] (https://ant.apache.org/ivy/history/latest-milestone/concept.html#cache) trong ~/.ivy2, nó sẽ cập nhật khi giải quyết các phụ thuộc. – oers

Trả lời

2

Ý tưởng khá hợp lý về việc chia tệp xây dựng mẫu thành các tệp trợ giúp có thể bao gồm. Cá nhân, bây giờ tôi đang switchin 'một dự án thực sự lớn từ kiến ​​(không quản lý phụ thuộc ở tất cả - chỉ sao chép các tập tin từ ftp) để ant/ivy giải pháp. Vì vậy, tôi đã thực hiện theo cách này - tôi có một tệp với các mục tiêu mốc - tức là sẵn sàng biên dịch, biên dịch, sẵn sàng lưu trữ, được lưu trữ - v.v. Tôi nghĩ bạn có ý tưởng. Tôi đã cấu hình phụ thuộc của tất cả các mục tiêu này (phụ thuộc trong điều khoản của ant, do't làm cho tôi sai). Theo cách đó - được biên dịch phụ thuộc vào sẵn sàng biên dịch, sẵn sàng biên dịch phụ thuộc vào việc khởi tạo - smth như thế này. Các mục tiêu này không có cơ thể - chúng bao gồm trong mọi tệp xây dựng của mọi mô đun của dự án đa mô-đun của bạn. Mục đích duy nhất của mục tiêu này để duy trì STATE của xây dựng, bởi vì điều này công cụ nhập khẩu trở nên khá khó khăn và nó là thời gian khó khăn để biết mục tiêu đã được overriden, và khi mục tiêu này sẽ được chạy. Nhưng với tập tin này tôi có thể dễ dàng thay đổi trạng thái của vy xây dựng trên mọi mốc quan trọng. Tôi muốn trong một mô-đun để biên dịch các tập tin trợ giúp với exe exe. Không có vấn đề - trong dự án này tôi chỉ làm điều này - sẵn sàng để lưu trữ phụ thuộc vào mục tiêu biên dịch trợ giúp. Và như các mục tiêu quan trọng này được bao gồm - tôi có thể ghi đè lên chỉ một số trong số họ - tất cả những người khác sẽ dự định cách mong muốn của dự án xây dựng.

Một phần khác trong chiến lược của tôi - mixins xây dựng tệp - cho mọi khu vực cụ thể. Vì vậy, tôi có một tập tin cho ivy. Có tôi đặt khởi tạo, giải quyết, xuất bản và như vậy. Khi tôi muốn sử dụng ivy - tôi chỉ bao gồm tập tin này và quản lý depdendencies thông qua các mốc quan trọng của tôi.Nếu xây dựng là điển hình - tôi chỉ bao gồm tệp này và có chức năng quy ước trên cấu hình. Tất cả ra khỏi hộp. Làm sao?? Chỉ cần kết hợp với các mixin khác. Hỗn hợp có thể bao gồm các hỗn hợp khác phụ thuộc vào chúng. Vì vậy, mỗi mixin là một phần tái sử dụng của chiến lược xây dựng của tôi. Nội dung từ OOP - đơn vị liên quan. Trong trường hợp của bạn nó là scala mixin với các mục tiêu cụ thể cho scala stuff.

Sau đó, tôi có delegate.xml ủy nhiệm con dự án các hoạt động xây dựng chung. Tôi có dist, tất cả, kiểm tra và bất cứ điều gì u muốn cho dự án multimodule. Trình tự xây dựng được đánh giá với danh sách công việc chống độc hại.

Cũng có một số tệp khác - nhưng đây là các tệp cơ bản về chiến lược đã giúp tôi có một bản dựng lại có thể tái sử dụng và có thể bảo trì với dự án LỚN và RẤT NHIỀU này. Vì vậy, nếu u quan tâm đến chi tiết, đừng ngại và liên hệ với tôi. Tôi sẽ rất vui được giúp bạn, bởi vì các tài liệu ivy thực sự gây khó chịu và không đầy đủ.

EDIT: Giới thiệu về sách - Ant in Action có thể giúp bạn, tôi đã lấy một vài ý tưởng từ cuốn sách này và tôi thực sự khuyên mọi người nên đọc. Có u có thể tìm thấy thứ ivy, cũng có. Và về tài liệu ivy - xin lỗi, đó là tất cả những gì có sẵn. Nhưng khi tôi gặp rắc rối với ivy cồng kềnh + kiến ​​này - tôi đã tìm thấy một số bài viết thú vị trên các blog riêng tư. Vì vậy ... có thể lấp đầy khoảng trống một cách nào đó.

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