Tạo các dự án Java EE với Maven


13

Tôi đã phát triển các ứng dụng web Java EE với Eclipse khoảng một năm. Chủ nhân của tôi không sử dụng Maven, nhưng tôi càng đọc về nó, tôi càng tin rằng Maven + Hudson sẽ có ích rất nhiều cho chúng tôi. Tuy nhiên, trước tiên, tôi phải trở nên thoải mái với những công nghệ đó trong thời gian rảnh rỗi, để tôi có thể tạo ra một bằng chứng khái niệm.

Ngay bây giờ, tôi vẫn là một người mới Maven. Có một tập hợp các thực tiễn tốt nhất để tạo các ứng dụng web Java EE với Maven không? Ví dụ, tôi có thể tạo một dự án với một kiểu mẫu cơ bản và sau đó thêm tất cả các JAR cần thiết bằng cách đặt các phụ thuộc vào POM cho thùng chứa servlet, EJB, EclipseLink, v.v ... Điều đó có thể hoạt động, nhưng nó có thể không phải là tốt nhất cách để làm điều đó. Tôi đánh giá rất cao bất kỳ hướng dẫn nào bạn có thể cung cấp về chủ đề này.

Câu trả lời:


10

Đừng bận tâm với các nguyên mẫu cho đến sau này

Đối với tất cả các thông tin bạn cần biết về Maven, hãy đọc một số sách trên trang web của họ . Tuy nhiên, đó là một chút quá mức cho những gì bạn đang cố gắng đạt được.

Để bắt đầu, hãy bố trí ứng dụng web của bạn theo cấu trúc Maven tiêu chuẩn cho các ứng dụng web như sau. (Bạn không cần một kiểu mẫu Maven cho việc này, nó chỉ là một loạt các thư mục tiêu chuẩn, bạn có thể thực hiện trong 2 phút).

  • src/main/java - chứa mã Java sản xuất của bạn
  • src/main/resources - chứa tài nguyên đường dẫn sản xuất của bạn (ví dụ: bối cảnh mùa xuân)
  • src/main/webapp - (chứa WEB-INF / web.xml nhưng không có thư mục lib)
  • src/test/java - chứa mã Java thử nghiệm của bạn
  • src/test/resources - chứa tài nguyên kiểm tra của bạn (ví dụ: nguồn cấp dữ liệu XML để kiểm tra dịch vụ web, v.v.)

Plugin cơ bản

Bước tiếp theo là chọn một loạt các plugin. Các nghi phạm thông thường là, rõ ràng là những người hỗ trợ sạch, biên dịch và tài nguyên (là một phần của Maven nhưng bạn có thể định cấu hình chúng). Sau đó, bạn sẽ có trình kiểm tra đơn vị chắc chắn và plugin WAR. Thế là đủ để tạo ra một ứng dụng web rất cơ bản.

Các plugin nâng cao hơn

Bước tiếp theo là giới thiệu các plugin Findbugs và PMD sẽ cung cấp cho mã của bạn một cách thấu đáo và báo cáo các vấn đề tiềm ẩn khác nhau. Bạn có thể sẽ muốn có JXR cho mã nguồn tham chiếu chéo, danh sách thẻ để theo dõi các thẻ TODO và REFACTOR, v.v. Trên hết...

... Sử dụng plugin Jetty cho các ứng dụng web

Sử dụng plugin Jetty để chạy tệp WAR trong IDE của bạn để dễ dàng gỡ lỗi. Nó nhanh và nhỏ và hoàn thành công việc thực sự nhanh chóng. Có Jetty là một phần của bản dựng Maven của bạn giúp dự án của bạn có thể được thử nghiệm trên bất kỳ máy nào mà không cần IDE với một số bảng điều khiển Máy chủ phức tạp được định cấu hình. Nó cũng cho phép bạn khai báo các phụ thuộc vào các tệp WAR khác, điều đó có nghĩa là bạn có thể tạo ra một môi trường làm việc hoàn chỉnh bao gồm nhiều ứng dụng web với một lệnh duy nhất "mvn clean jetty: run". Điều này hoạt động ở bất cứ đâu và thậm chí bạn có thể cung cấp cấu hình JNDI thử nghiệm để các nguồn dữ liệu được tiêm vào Spring của bạn đều được cấu hình bên ngoài. Nếu bạn kết hợp cách tiếp cận Cầu tàu này với trang HTML trình diễn chuẩn (src/test/resources/demo.html) bạn sẽ tiết kiệm được hàng giờ nhà phát triển đang cố gắng để có được môi trường làm việc tại địa phương. Một lệnh và bạn đã hoàn tất. Đơn giản.

Cấu hình IDE của bạn

Với Maven thật dễ dàng vì tất cả các ông lớn đều ủng hộ nó: Eclipse, Netbeans và dĩ nhiên là Intellij yêu thích của tôi. Chỉ cần trỏ IDE của bạn vào tệp pom.xml và nó sẽ đảm nhiệm việc giảm tất cả các phụ thuộc được liệt kê cho bạn. Không còn mucking về với WEB-INF/lib. Trong Eclipse, bạn thường sử dụng Tệp | Nhập ... | Dự án Maven | pom.xml.

Tích hợp với Hudson

Đầu tiên cài đặt Hudson (nó chỉ là một ứng dụng web) và sau đó nhắm mục tiêu hệ thống kiểm soát phiên bản của bạn để nó kiểm tra phiên bản phù hợp. Bước cuối cùng của bạn là cấu hình nó để nó sử dụng Maven để thực hiện quá trình xây dựng. Rõ ràng Maven sẽ phải được cài đặt trên máy dựng của bạn (giả sử nó khác với máy phát triển của bạn).

Hudson chỉ chụp ảnh nhanh

Có Hudson thực hiện các bản dựng ảnh chụp nhanh và để các bản dựng phát hành theo một quy trình thủ công. Sử dụng phương pháp đó sẽ có nghĩa là các nhà phát triển có thể chia sẻ mã của họ dưới bản sửa đổi ảnh chụp nhanh (ví dụ 1.0.0-SNAPSHOT) và chỉ khi nó có thể vượt qua bản dựng thì nó mới được chia sẻ vào kho lưu trữ nhóm. Thông thường, Hudson sẽ thực hiện "triển khai sạch mvn" mặc dù bao gồm cả mục tiêu "trang web" cũng có thể là một phần trong quy trình của bạn vì nó sẽ tạo một trang web dự án nhỏ cho mỗi bản dựng. Các nhà phát triển trong nhóm sẽ tự động xây dựng bản chụp nhanh được cập nhật vào dự án của họ thông qua quy trình quản lý phụ thuộc Maven.

Hudson cung cấp rất nhiều plugin có thể hỗ trợ tất cả các cách đo. Yêu thích cá nhân của tôi là theo dõi số lượng thử nghiệm vượt qua cho mỗi dự án theo thời gian. Thật tuyệt khi cho quản lý thấy rằng số lượng kiểm tra đơn vị và phạm vi bảo hiểm của bạn ngày càng tăng.

Hướng dẫn thiết lập chung

Chia kho của bạn thành ít nhất cấu trúc sau:

  • phát hành nhóm - Tất cả các tạo tác sản xuất được phát hành của bạn ở đây
  • team-snapshot - Tất cả các tạo phẩm phát triển ảnh chụp nhanh của bạn ở đây
  • phát hành bên thứ ba - Tất cả các thư viện bên thứ ba hỗ trợ của bạn đều có ở đây (ví dụ: Spring, Hibernate, v.v.)

Tài khoản người dùng của nhà phát triển sẽ không thể ghi vào kho lưu trữ của nhóm, ảnh chụp nhanh hoặc phát hành. Điều này sẽ cho phép nhà phát triển bỏ qua Hudson nếu họ đang vội và sẽ nhanh chóng trở thành chuẩn mực.

Đảm bảo bạn luôn tải xuống nguồn, chữ ký javadocs và SHA cho tất cả các bên thứ ba của bạn. Jarvana là một nhà thám hiểm kho lưu trữ tuyệt vời cho tất cả những người khó tìm.

Cân nhắc cài đặt trình quản lý kho lưu trữ như Nexus hoặc Artifactory để cho phép kiểm soát tốt hơn kho lưu trữ đang phát triển của bạn.


2
Sonar cũng khá tuyệt vời và phù hợp với maven / Hudson
Kevin

1
Chắc chắn rồi. Ngay bây giờ, nếu tôi đang làm việc trong một dự án Maven trong một nhóm, tôi sẽ mong đợi một Findbugs / PMD địa phương nhanh chóng nắm bắt được vấn đề của kẻ giết người, sau đó là một công việc Sonar sau khi xây dựng Jenkins với việc triển khai nhân tạo lên Nexus hoặc Artifactory. Điều này cung cấp vị trí dễ dàng của các tạo tác và cung cấp phân tích tác động ("nơi được sử dụng") cho các tạo tác đó trong toàn bộ hệ sinh thái dự án. Cùng với git, JIRA và Fisheye bạn đã có một quy trình phát triển tuyệt vời dành cho bạn.
Gary Rowe

1
Gary, liên kết pdf đã hết hạn
user1787812

1

Maven cung cấp rất nhiều nguyên mẫu

mvn archetype:generate

sẽ in một danh sách có sẵn.

Sự khác biệt chính giữa các kiểu mẫu Java đơn giản với các kiểu mẫu J2EE là các thư mục cho jsp và hình ảnh sẽ được tạo. Nếu bạn bắt đầu một dự án J2EE mới, hãy cân nhắc sử dụng một trong số chúng ngay từ đầu.

Khi dự án của bạn phát triển, bạn có thể thêm nhiều phụ thuộc. Cá nhân tôi thích bắt đầu với bộ sưu tập phụ thuộc tối thiểu (ví dụ: kiểu mẫu cơ bản J2EE) và sau đó dần dần thêm những gì tôi cần.


0

Tôi đã thực hiện nó bằng cách bắt đầu từ một nguyên mẫu cơ bản và thêm vào tất cả các bit, và tôi khá chắc chắn rằng đó không phải là một cách rất tốt. Nhưng tôi cũng thấy khó xử theo cách khác; chọn một nguyên mẫu tốt là gì, trừ khi bạn đã thành thạo sâu sắc về những bí mật. Đó là tất cả một chút quá nhiều như truyền thuyết phù thủy (trái ngược với thông tin kỹ thuật có thể khám phá hợp lý) cho khẩu vị của tôi


Và tôi nghĩ đó là một câu hỏi hay. Chúc tôi có câu trả lời tốt hơn.
Donal Fellows

Nó rất được đánh giá cao, thưa ngài.
Michael

0

Maven cung cấp một cách để tạo các dự án từ các mẫu được gọi là Archetypes . Bạn sử dụng lệnh mvn archetype:generateđể chọn một tương tác . Bạn cũng có thể chỉ định một trực tiếp.

mvn archetype:generate \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DarchetypeArtifactId=maven-archetype-j2ee-simple \
    -DarchetypeVersion=1.0

Tất cả trên một dòng.


0

Tôi đã sử dụng Maven và Hudson ba tháng qua. Nó giúp tôi kiểm tra sức khỏe của cơ sở mã một cách tự nhiên bằng cách thực hiện tất cả các thử nghiệm đơn vị, tạo báo cáo thử nghiệm. Bạn có thể thử điều này.
Bạn cũng có thể thử Spring Roo. Nó là một công cụ RAD để tạo dự án J2EE dựa trên Spring.

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.