2009-11-21 39 views
9

Tôi đang bắt đầu một dự án mới. Tôi định sử dụng Maven lần đầu tiên. Từ đọc các chủ đề trước, những người thích Maven đã thuyết phục tôi ... nhưng những người ghét Maven dường như đã bước vào mìn và tôi muốn có thêm chi tiết.Bắt đầu một dự án Maven mới, bạn cần tránh những loại mìn nào?

Dường như tôi sẽ bị ràng buộc theo các quy ước của Maven. Đó có phải là cách nói không? Có cái gì khác không?

* Đây sẽ là một dự án có kích thước trung bình, phức tạp; ballpark của tôi sẽ là 10k dòng mã, phát triển không quá 100k trong suốt cuộc đời của nó. (Tôi muốn xem xét lớn là> 500k và nhỏ để là < 10k, FWIW). *

Vâng, tôi đang sử dụng Maven. Nếu lỗ hổng là "Maven", mà không có bất kỳ chi tiết nào khác, bạn đang lãng phí băng thông trên thư trả lời.

+0

Có các khía cạnh nào cho dự án của bạn. Nó là một dự án java đơn giản, hay có cái gì khác? Điều đó sẽ làm cho việc trả lời câu hỏi này dễ dàng hơn. –

+0

Tôi cảm thấy kinh khủng vì điều này nhưng tôi thực sự muốn gửi một câu trả lời cho câu này, "Maven". – Esko

+0

Tôi đồng ý với Esko, "Maven" là mìn lớn nhất cần tránh. –

Trả lời

7

Thực tế, theo triết lý Maven và do đó, các quy ước của nó là một ý tưởng hay khi không theo dõi chúng sẽ làm cho mọi thứ trở nên phức tạp hơn. Tuy nhiên, bởi vì có vẻ khó để tóm tắt triết lý trong một câu trả lời, vì Maven có một chút đường cong học tập, và vì tài liệu Maven không phải lúc nào cũng tốt như nó nên (đây có lẽ là mỏ đất lớn nhất), lời khuyên của tôi sẽ thực sự là lấy một cuốn sách (hoặc hai) và làm những việc như trong cuốn sách. Nếu bạn không biết nên chọn cái nào, hãy xem this page. Theo ý kiến ​​của tôi, Maven: The Definitive GuideBetter Builds with Maven chắc chắn là bài đọc tốt và có sẵn trên mạng. Nhưng sau đó Apache Maven 2: Effective Implementation đồng tác giả của Brett Porter phải là một trong những tốt quá, tôi chỉ không đọc nó.

Khi bạn bắt đầu, đừng ngần ngại hỏi lời khuyên, hướng dẫn, chỉ dẫn về các chủ đề cụ thể để đi đúng hướng. Các maven user list là một nơi tốt cho việc này. Đặt câu hỏi ở đây trên StackOverflow là một tùy chọn khác :) Ví dụ: cách tổ chức một mô-đun đa cấu hình có thể là một trong những chủ đề đầu tiên. Nhưng không có thêm chi tiết, thì không thể trả lời ngay bây giờ.

+0

Tôi tương đối sách xấu; Tôi đã học bằng cách làm và đọc tài liệu nhiều hơn là học bằng cách đọc sách. Nếu bạn định đề xuất * một * trong số đó, nó sẽ như thế nào? –

+0

Có hoặc không có sách, thực sự là cách duy nhất để tìm hiểu ... Vấn đề ở đây là tài liệu Maven không phải lúc nào cũng đủ tốt. Và bởi vì thường có nhiều hơn một giải pháp để làm những việc với maven, tôi nghĩ rằng một cuốn sách là một người bạn đồng hành tốt để bắt đầu (nó sẽ giúp bạn lựa chọn đúng). Bắt đầu với * Maven: The Definitive Guide * (có sẵn trên mạng hoặc từ nhật thực nếu bạn cài đặt plugin m2eclipse). –

6

Tôi chắc chắn sẽ khuyên bạn nên thiết lập một nexus repository tại vị trí của bạn. Đây là miễn phí và sẽ giúp tích hợp các kho lưu trữ không maven, và lưu trữ chúng cục bộ để cải thiện hiệu suất của việc thiết lập một môi trường mới.

+0

+1 .. và cũng đặt các lọ như jmxtools có giấy phép. – Bozho

+1

Tôi chưa từng nghe về Nexus trước đây; 1, trông hoàn hảo. –

1

Không sử dụng các tính năng ưa thích bạn không thực sự cần, chẳng hạn như:

  • Multimodules
  • poms Chánh

Cố gắng ở lại như đơn giản càng tốt để càng lâu càng tốt . Phát thông qua chu kỳ phát hành rất sớm, ví dụ: bằng cách thực hiện các phiên bản 0.0.1. Tự động hóa.

Nếu bạn đang sử dụng thiết lập phức tạp (ví dụ: Eclipse + m2eclipse + WTP +), hãy chuẩn bị cho một số trục trặc và biết nơi công cụ lưu trữ cài đặt, tệp tạm thời, vv. . Nhiều thời gian có thể bị mất nếu bạn đang nghĩ "maven làm tất cả" chỉ để tìm ra rằng một phụ thuộc Snapshot đã không được cập nhật do bộ nhớ đệm hoặc như nhau.

+1

POM mẹ, đa mô-đun, ưa thích? Bạn nghiêm túc chứ? Tôi có nghĩa là, bạn không thể tránh sử dụng chúng (và không có lý do để làm như vậy) vì vậy chỉ cần nói không sử dụng Maven trong trường hợp đó nếu bạn thực sự tin vào điều này. –

+0

Nếu bạn cần chúng, hãy sử dụng chúng. Có những người tạo ra một pom cha mẹ freaking cho một dự án độc lập mà không có bất kỳ sự phụ thuộc nào. Tại sao vậy? Thừa kế được đánh giá cao và nó được sử dụng quá thường xuyên mà không cần suy nghĩ. – mhaller

+0

@mhaller, bạn đúng là 3/4. Có xu hướng sử dụng quá nhiều poms mẹ nhưng xu hướng sử dụng các đa mô-đun. Có nhiều thứ để đạt được trong việc nhóm các thành phần sẽ được triển khai cùng nhau trong cùng một dự án đa mô-đun. Và khi làm như vậy, bạn hiếm khi (nếu bao giờ) mất khả năng tận dụng một thành phần duy nhất của dự án MM đó. – sal

0

Trong thuật ngữ 'Maven', chúng tôi nghĩ về lõi Maven và nhóm plugin, được phát triển bởi nhóm Maven hoặc những người khác. Những điều không hoàn hảo trong thế giới Maven là:

  • khó hiểu phạm vi phụ thuộc, dẫn đến những lỗi phổ biến trong poms của người dùng và nhà cung cấp bên thứ ba, gây ra một mớ hỗn độn lớn nếu nó là thư viện được sử dụng phổ biến,
  • lạm dụng dãy trong dependecies,
  • hệ thống yếu kém của Xem xét thư viện của bên thứ ba poms trước khi chúng được đặt trong kho Maven,
  • không đủ chất lượng của một số plugin,
  • vấn đề với tính sẵn sàng của một số hiện vật, đặc biệt là từ Mặt trời (giới hạn giấy phép hành tây)

Ngoài ra còn có các khía cạnh tâm lý của việc sử dụng Maven. Đối với những người sử dụng Ant trong công việc hàng ngày chuyển sang Maven là khó khăn đặc biệt là cho các dự án không HelloWorld. Những người khác có kinh nghiệm xấu từ những ngày đầu của Maven khi không có tài liệu hay, sách và bộ plugin nhỏ hơn. Đối với những người này, các dự án của họ dễ dàng hơn trong Ant. Lý do cuối cùng tại sao một số người không thích Maven là sự thiếu hiểu biết.

Tôi đồng ý với Pascal rằng "rất nhiều người có thể bị lỗi một cách mù quáng". Tôi không thể tưởng tượng thế giới Java ngày nay mà không có Maven.

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