2008-12-22 12 views

Trả lời

5

Trong khi tôi thích ý tưởng của Maven, tôi luôn thấy mình chiến đấu với bất kỳ thứ gì ngoài cấu hình đơn giản nhất. Kiến trúc của nó dựa trên plugin và chất lượng của các plugin khác nhau rất nhiều. Tài liệu sơ sài tốt nhất; một nửa thời gian tôi không thể tìm ra nếu doc ​​tôi đang đọc là cho Maven 1 hoặc 2. Và làm thế nào thường có bạn đã phải nghỉ mát để sử dụng maven-ant-plugin để làm một cái gì đó cơ bản?

Tôi đã sử dụng Apache Ivy trong khoảng một năm nay và tôi rất hài lòng với điều đó. Có một chút của một đường cong học tập mặc dù. Nhưng có một danh sách gửi thư tích cực và tác giả rất nhạy cảm.

Những gì tôi đã làm là viết một "thư viện" của một vài mục tiêu Ant đơn giản như "giải quyết", "biên dịch", "cài đặt", v.v. mong đợi mọi thứ ở những nơi Maven chuẩn (chẳng hạn như src/main/java) và sau đó <import> các mục tiêu vào các dự án khác nhau của tôi. Bằng cách này, bạn có được cấu hình tốt nhất của cả thế giới - Maven và tất cả sức mạnh của Ant.

4

Tôi thích sử dụng Ant với Ivy. Ivy sử dụng kho lưu trữ Maven để tìm nạp phụ thuộc thư viện mà không buộc bạn phải thay đổi toàn bộ hệ thống xây dựng của mình cho phù hợp với Maven.

3

Tôi đã sử dụng buildr cho một số dự án của mình. Kịch bản xây dựng rất ngắn gọn và dễ đọc (không có xml) và nó sử dụng repo maven (với nỗ lực tầm thường, maven 1 và maven 2).

Tôi đang tìm kiếm thứ gì đó sau maven1 để làm việc cho một số dự án và m2 không phải là tất cả hấp dẫn. Maven đã để lại tất cả người dùng m1 cao và khô với sự cần thiết phải làm lại tất cả các hệ thống xây dựng của họ (và một số của tôi không thể được thể hiện bằng m2 theo như tôi có thể nói).

+0

Cách duy nhất để đi, XML (Ant) là không phù hợp cho các nhiệm vụ chúng tôi muốn làm. Điều đáng ngạc nhiên là cộng đồng cần hiểu nó bao lâu. – Denis

0

Tôi sẽ đi với buildr, nếu tôi đang mong đợi các mục tiêu xây dựng phức tạp trong bản dựng của mình. Lợi ích là, bạn không phụ thuộc vào bất kỳ thư viện cụ thể nào cả. Bạn có tất cả các API từ Ruby để làm bất cứ điều gì bạn muốn; không giống như Ivy, trong trường hợp này bạn vẫn bị ràng buộc với ANT. Nỗ lực chuyển đổi sang Ivy có giá trị nếu bạn muốn giới thiệu sự phụ thuộc thư viện vào một cơ chế xây dựng dựa trên ANT đã được thiết lập để thực hiện tất cả các hoạt động mà bạn muốn thực hiện.

0

Có ít nhất ba phần khác nhau của Maven: kho lưu trữ, vòng đời độc lập thực hiện và các quy ước cho một dự án mặc định. Sử dụng Ivy chỉ cung cấp kho lưu trữ.

Tôi đã không sử dụng nó nhưng tôi nghĩ rằng easyant được thiết kế để thay thế hoàn toàn hơn cho Maven. Nó sử dụng Ivy làm kho lưu trữ nhưng sau đó bổ sung các quy ước và các mô-đun chuẩn.

+0

Tôi đã tìm thấy EasyAnt hấp dẫn nhưng tài liệu của họ không tốt. Nó nên cho nó mục tiêu chủ yếu là Java và làm thế nào nó so sánh với Ant và Maven là những người chơi hiện tại lớn nhất trong Java. – Wernight

1

Tôi thực sự thích sử dụng ant4eclipse - bạn thiết lập phụ thuộc dự án của bạn trong nhật thực như bình thường và bạn có thể viết một kịch bản kiến ​​sẽ xây dựng tất cả các dự án theo đúng thứ tự.

Đối với libs của bên thứ ba, bạn có thể thiết lập một dự án nhật thực chứa (và xuất) tất cả các lọ của bạn [Tôi KHÔNG NGHỊ ĐƯỢC], hoặc một dự án riêng biệt cho mỗi lib của bên thứ ba, xuất jar. [Tôi khuyên bạn nên sau b/c bạn có thể theo dõi dự án-> deps bên thứ ba và nâng cấp các bộ phận khi cần thiết.]

8

Nó phụ thuộc vào những gì bạn sử dụng anyway. Maven 1? Maven 2? Tôi tìm thấy Maven 2 đã được làm tài liệu một cách thô lỗ và khá mạnh mẽ, khi được sử dụng kết hợp với các nhiệm vụ Ant và một số trình bổ sung Java được nướng tại nhà.

Có các tác vụ Ant để sử dụng các tính năng của Maven từ Ant: http://maven.apache.org/ant-tasks/index.html. Vì vậy, bạn không thực sự cần phải viết "thư viện" của riêng bạn.

Và bạn có thể gọi Ant từ Maven: http://maven.apache.org/plugins/maven-antrun-plugin/.

Bạn cũng có thể viết kịch bản bằng Groovy chẳng hạn: http://groovy.codehaus.org/GMaven+-+Executing+Groovy+Code.

Hoặc chỉ cần viết mã Java cho các bit tùy chỉnh mà bạn cần: http://maven.apache.org/guides/plugin/guide-java-plugin-development.html.

Không có lý do không để trộn và kết hợp, khi bạn có thể làm điều đó;)

+0

(nhận xét đã được thêm để tôi có thể nhớ câu trả lời này) +1 – toolkit