1.1 Chương trình lớn

Chúng ta đã học cách viết chương trình nhỏ, bây giờ chúng ta sẽ học cách viết chương trình lớn. Như bạn đã biết, chương trình càng lớn và phức tạp thì càng trả nhiều tiền cho sự phát triển của nó :) Và hãy bắt đầu với một chút thông tin cơ bản ...

Khi các chương trình phát triển về quy mô, các nhà phát triển phải đối mặt với hai thách thức mới:

  • Một số lượng lớn người đang làm việc trên cùng một chương trình.
  • Không có người nào biết toàn bộ mã của chương trình.

Rất thường xuyên, các tình huống bắt đầu nảy sinh khi một lập trình viên sửa lỗi ở một nơi của chương trình và đồng thời làm hỏng thứ gì đó ở nơi khác. Tài liệu phát hành thậm chí còn có trò đùa này:

Danh sách các thay đổi:

  • Sửa lỗi cũ :)
  • Đã thêm cái mới :(

Sau đó, họ đã đưa ra hai cách tiếp cận để giải quyết vấn đề này: kỹ thuật và quản lý.

Phương pháp kỹ thuật là các chương trình được chia thành các phần: thư viện và mô-đun . Mỗi mô-đun như vậy là một viên gạch nhỏ mà từ đó các dự án lớn được xây dựng. Thư viện là những thành phần phổ biến như vậy có thể được sử dụng trong các chương trình khác nhau.

Cách tiếp cận quản lý thậm chí còn thú vị hơn - họ giới hạn số lượng người có thể làm việc trong một dự án/thư viện. Theo kinh nghiệm, họ thậm chí còn đưa ra một quy tắc: đội phải đông đến mức "có thể ăn bằng hai chiếc pizza . " Điều này thường có nghĩa là nếu có nhiều hơn 8 người làm việc trong một dự án thì dự án đó cần được chia thành hai dự án.

Nó đã trở nên phổ biến trong cộng đồng các nhà phát triển Java để viết các thư viện cho mọi trường hợp và cung cấp chúng một cách công khai. Do đó, các lập trình viên Java không thể viết lại cùng một mã (thường là mã thô và chứa lỗi), mà sử dụng các giải pháp đã được chứng minh và làm sẵn .

Một động lực bổ sung là ngôn ngữ Java đã trở nên phổ biến rộng rãi khi viết các giải pháp phía máy chủ (nó hoạt động trên phần phụ trợ). Đầu tiên, phần mềm máy chủ có yêu cầu cao hơn về độ tin cậy và việc sử dụng các thư viện đã được thử nghiệm theo thời gian luôn tốt hơn là viết mã của riêng bạn.

Thứ hai, các máy chủ thực tế không có giới hạn về kích thước của mã. Nhà phát triển ứng dụng dành cho thiết bị di động cố gắng nhồi nhét nó vào 10 megabyte, ứng dụng dành cho máy tính để bàn - vào 100 megabyte. Và một nhà phát triển phụ trợ Java có thể nhồi nhét vài chục gigabyte thư viện vào một dự án và không ai nói lời nào với anh ta :)

Nhân tiện, đây không phải là một trò đùa. Bạn có thể dễ dàng bắt gặp một dự án phụ trợ với vài chục mô-đun và vài trăm thư viện. Nhưng việc mô tả (và thay đổi!) các kịch bản xây dựng cho các dự án như vậy trở nên vô cùng khó khăn.

Và rồi Maven xuất hiện.

1.2 Giới thiệu về Maven

Maven là một "khuôn khổ" đặc biệt để quản lý xây dựng dự án. Nó tiêu chuẩn hóa 3 điều:
  • Mô tả dự án;
  • Kịch bản xây dựng dự án;
  • Sự phụ thuộc giữa các thư viện.

Người tiền nhiệm của Maven là Ant và người kế vị của nó là Gradle . Nhưng chính Maven đã phát triển và hoàn thiện ba tiêu chuẩn được liệt kê, đồng thời điều chỉnh sự tương tác của chúng. Chính ông là người đã đưa công việc của cộng đồng Java lên một tầm cao mới. Hãy xem xét nó chi tiết hơn.

maven

Về mặt kỹ thuật, Maven là một chương trình/dịch vụ đặc biệt, mục đích chính là quản lý quá trình xây dựng dự án. Nó có thể được tải xuống đơn giản dưới dạng kho lưu trữ và giải nén vào bất kỳ thư mục nào. Bạn không cần một trình cài đặt đặc biệt cho việc này.

Cô ấy không có giao diện đồ họa - tất cả các lệnh được trao cho cô ấy bằng bảng điều khiển . Để làm việc với nó thoải mái hơn nữa, bạn nên đăng ký các biến môi trường đặc biệt trong HĐH của mình.

Maven cũng có một kho lưu trữ đặc biệt (thư mục/thư mục) nơi nó lưu trữ các thư viện mà nó sử dụng khi xây dựng dự án. Bạn sẽ cần chọn một số thư mục trên đĩa và chỉ định nó làm kho lưu trữ.

Một điều thú vị khác là sự hiện diện của kho lưu trữ Maven toàn cầu cho tất cả các thư viện, nhưng chúng ta sẽ nói về điều này sau một chút.

1.3 Tải xuống và cài đặt Maven

Maven có một trang web chính thức maven.apache.org . Có rất nhiều tài liệu về dự án, vì vậy nếu bạn gặp khó khăn hoặc có thêm câu hỏi nào - hãy tham gia, đừng ngại.

Ngoài ra trên trang tải xuống ( https://maven.apache.org/download.cgi ), bạn có thể tải xuống kho lưu trữ maven (apache-maven-3.8.5-bin.zip). Kho lưu trữ được giải nén sẽ chiếm khoảng 10 MB, mặc dù kho lưu trữ maven cục bộ cuối cùng sẽ yêu cầu vài trăm megabyte bộ nhớ.

Maven được viết bằng Java và yêu cầu JRE ít nhất là phiên bản 7, cũng như các biến môi trường Java_HOME đã xác định.

Chỉ cần tạo một thư mục cho Maven trên máy tính của bạn, chẳng hạn như d:\devtools và giải nén tệp lưu trữ có Maven vào đó. Do đó, bạn sẽ nhận được một thư mục như d:\devtools\maven\bin , nơi sẽ chứa các tệp nhị phân chính của dự án.

1.4 Biến môi trường

Sau đó, bạn cần thêm đường dẫn đến thư mục bin từ kho lưu trữ đã giải nén vào biến môi trường PATH.

Để đặt biến môi trường trong Windows 10, bạn cần vào Bảng điều khiển - Hệ thống - Cài đặt hệ thống nâng cao. Sau đó nhấp vào "Biến môi trường", tìm PATH và chọn "Chỉnh sửa", sau đó thêm đường dẫn d:\devtools\maven\bin vào cuối dòng. Chú ý, đường dẫn phải dẫn chính xác đến thư mục bin.

Trên HĐH dựa trên Unix, biến môi trường có thể được thêm bằng lệnh console:

export PATH=/opt/apache-maven-3.8.5/bin:$PATH

Nếu bạn đã làm đúng mọi thứ, thì trong bảng điều khiển, bạn cần nhập lệnh: "mvn -v". Đáp lại, bạn sẽ thấy một cái gì đó như:

C:\Users\Zapp>mvn -v
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 15:51:28+0200)
Maven home: T:\apache-maven-3.0.5\bin\..
Java version: 1.8.0_65, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_65\jre
Default locale: en_US, platform encoding: Cp1251
OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos"

1.5 Kho lưu trữ Maven cục bộ

Bạn cũng có thể đặt một thư mục đặc biệt nơi Maven sẽ lưu trữ các thư viện jar mà nó sẽ sử dụng khi xây dựng dự án. Thư mục này được gọi là kho lưu trữ maven cục bộ .

Nếu không có thư mục nào được chỉ định, Maven sẽ tạo nó trong thư mục chính của người dùng hiện tại. Thư mục của tôi là: C:\Users\Zapp\.m2

Thư mục có tên khá cụ thể “.m2”. Mặc dù nó không khiến người dùng Linux sợ hãi - nhưng có một cách tiếp cận khá phổ biến để đặt tên cho các "kho lưu trữ" khác nhau và / hoặc bất kỳ kho lưu trữ thông tin dịch vụ nào khác.

Quan trọng! Không đặt Maven trong các thư mục hệ thống, vì nó sẽ cần quyền ghi vào các thư mục này trong quá trình hoạt động, điều này có thể gây hại cho phần mềm chống vi-rút hoặc hệ điều hành.

Maven trước phiên bản 3.5 yêu cầu một biến môi trường có tên là M2_HOME, nhưng điều này không còn cần thiết nữa.

Bạn có thể đọc thêm về cách định cấu hình Maven tại liên kết: https://maven.apache.org/configure.html