Một công cụ xây dựng là gì?


130

Trong 4 năm qua, tôi đã lập trình với Eclipse (cho Java) và Visual Studio Express (cho C #). Các IDE được đề cập dường như luôn cung cấp mọi cơ sở mà một lập trình viên có thể yêu cầu (tất nhiên liên quan đến lập trình).

Gần đây tôi đã nghe về một cái gì đó gọi là "công cụ xây dựng". Tôi nghe nói chúng được sử dụng gần như trong tất cả các loại phát triển thế giới thực. Họ chính xác là gì? Những vấn đề họ được thiết kế để giải quyết? Tại sao tôi không bao giờ cần chúng trong bốn năm qua? Có phải chúng là loại dòng lệnh tước bỏ IDE?

Câu trả lời:


117

Công cụ xây dựng là gì?

Công cụ xây dựng là các chương trình tự động hóa việc tạo các ứng dụng thực thi từ mã nguồn (ví dụ: .apk cho ứng dụng Android). Tòa nhà kết hợp biên dịch, liên kết và đóng gói mã thành một hình thức có thể sử dụng hoặc thực thi được.

Về cơ bản xây dựng tự động hóa là hành động lập kịch bản hoặc tự động hóa một loạt các nhiệm vụ mà các nhà phát triển phần mềm thực hiện trong các hoạt động hàng ngày của họ như:

  1. Tải phụ thuộc.
  2. Biên dịch mã nguồn thành mã nhị phân.
  3. Đóng gói mã nhị phân đó.
  4. Chạy thử nghiệm.
  5. Triển khai hệ thống sản xuất.

Tại sao chúng ta sử dụng các công cụ xây dựng hoặc xây dựng tự động hóa?

Trong các dự án nhỏ, các nhà phát triển sẽ thường gọi thủ công quá trình xây dựng. Điều này không thực tế đối với các dự án lớn hơn, nơi rất khó theo dõi những gì cần xây dựng, theo trình tự nào và những phụ thuộc nào có trong quá trình xây dựng. Sử dụng một công cụ tự động hóa cho phép quá trình xây dựng trở nên nhất quán hơn.

Công cụ xây dựng khác nhau có sẵn (Chỉ đặt tên một vài):

  1. Dành cho java - Ant, Maven, Gradle.
  2. Đối với .NET framework - NAnt
  3. c # - MsBuild.

Để đọc thêm, bạn có thể tham khảo các liên kết sau:

1. Xây dựng tự động hóa

2. Danh sách phần mềm tự động hóa xây dựng

Cảm ơn.


17

Công cụ xây dựng là công cụ để quản lý và sắp xếp các bản dựng của bạn và rất quan trọng trong môi trường có nhiều dự án, đặc biệt nếu chúng được kết nối với nhau. Họ phục vụ để đảm bảo rằng nơi nhiều người đang làm việc trên các dự án khác nhau, họ không phá vỡ bất cứ điều gì. Và để chắc chắn rằng khi bạn thực hiện các thay đổi của mình, chúng cũng không phá vỡ bất cứ điều gì.

Lý do bạn chưa từng nghe về họ trước đây là bạn chưa từng làm việc trong môi trường thương mại trước đây. Có rất nhiều thứ mà bạn có thể chưa gặp phải trong môi trường thương mại, đặc biệt nếu bạn làm việc trong nhà phần mềm.

Như những người khác đã nói, bạn đã và đang sử dụng chúng, tuy nhiên, bạn không phải xem xét chúng, bởi vì bạn có thể đã làm việc theo cách khác với cách làm việc thương mại thông thường.


10

Các công cụ xây dựng thường được chạy trên dòng lệnh, bên trong IDE hoặc tách biệt hoàn toàn với nó.

Ý tưởng là để tách công việc biên dịch và đóng gói mã của bạn khỏi việc tạo, gỡ lỗi, v.v.

Một công cụ xây dựng có thể được chạy trên lệnh hoặc bên trong IDE, cả hai đều được kích hoạt bởi bạn. Chúng cũng có thể được sử dụng bởi các công cụ tích hợp liên tục sau khi kiểm tra mã của bạn ra khỏi kho lưu trữ và trên một máy xây dựng sạch.

make là một công cụ lệnh sớm được sử dụng trong môi trường * nix để xây dựng C / C ++.

Là một nhà phát triển Java, các công cụ xây dựng phổ biến nhất là Ant và Maven. Cả hai có thể được chạy trong các IDE như IntelliJ hoặc Eclipse hoặc NetBeans. Chúng cũng có thể được sử dụng bởi các công cụ tích hợp liên tục như Cruise Control hoặc Hudson.


6
Bây giờ, Gradle cũng được sử dụng rộng rãi
asura

Không phải từ nơi tôi ngồi. Tôi không biết về Gradle, vì vậy cảm ơn bạn đã tham khảo.
duffymo

@duffymo Bạn có thể vui lòng giải thích trên dòng cuối cùng. Tích hợp liên tục là gì? Làm thế nào chúng liên quan đến các công cụ xây dựng?
Quazi Irfan 7/2/2015

4

Các công cụ xây dựng nói chung là để chuyển đổi mã nguồn thành nhị phân - nó tổ chức mã nguồn, đặt cờ biên dịch, quản lý các phụ thuộc ... một số trong số chúng cũng tích hợp với kiểm tra đơn vị đang chạy, phân tích tĩnh, tạo tài liệu.

Eclipse hay Visual Studio cũng là các hệ thống xây dựng (nhưng nhiều IDE hơn) và đối với studio trực quan, nó là msbuild cơ bản để phân tích các tệp dự án phòng thu trực quan dưới mui xe.

Nguồn gốc của tất cả các hệ thống xây dựng có vẻ như 'tạo nên' nổi tiếng.

Có các hệ thống xây dựng cho các ngôn ngữ khác nhau:

  1. C ++: tạo, cmake, làm sẵn
  2. Java: ant + ivy, maven, gradle
  3. C #: msbuild

Thông thường, xây dựng các hệ thống bằng cách sử dụng ngôn ngữ cụ thể của miền sở hữu (make, cmake) hoặc xml (ant, maven, msbuild) để chỉ định một bản dựng. Xu hướng hiện nay là sử dụng một ngôn ngữ kịch bản thực để viết kịch bản xây dựng, như lua cho ra mắt và hấp dẫn cho lớp, ưu điểm của việc sử dụng tập lệnh là linh hoạt hơn nhiều và cũng cho phép bạn đưa ra một bộ tiêu chuẩn API (như xây dựng DSL).


1

Build Process là một Quá trình biên dịch mã nguồn của bạn cho bất kỳ lỗi nào bằng cách sử dụng một số công cụ xây dựng và tạo các bản dựng (là các phiên bản thực thi của dự án). Chúng tôi (chủ yếu là các nhà phát triển) thực hiện một số sửa đổi trong mã nguồn và đăng ký mã đó để quá trình xây dựng xảy ra. Sau quá trình xây dựng, nó cung cấp hai kết quả: 1. Hoặc xây dựng PASSES và bạn nhận được một phiên bản thực thi của dự án của bạn (Build đã sẵn sàng). 2. Nó thất bại và bạn nhận được một số lỗi nhất định và bản dựng không được tạo.

Có nhiều loại quy trình xây dựng khác nhau như: 1. Xây dựng hàng đêm 2. Xây dựng có kiểm soát 3. Xây dựng tích hợp liên tục, v.v.

Xây dựng các công cụ trợ giúp và tự động hóa quá trình tạo các bản dựng.

* Vì vậy, trong Short Build là Phiên bản Phần mềm ở định dạng trước khi phát hành được sử dụng bởi nhóm Nhà phát triển hoặc Phát triển để có được sự tin tưởng về kết quả cuối cùng của Sản phẩm bằng cách liên tục theo dõi Sản phẩm của họ và giải quyết mọi vấn đề sớm trong quá trình phát triển. *


Bạn có thể vui lòng cho biết thêm một chút về các bản dựng Tích hợp hàng đêm, Gated và liên tục không?
Quazi Irfan 7/2/2015

@iamcreasy Tôi đã thêm một câu trả lời liên quan đến câu hỏi của bạn để giải thích về các bản dựng khác nhau. Bạn có thể tìm thấy lời giải thích dưới đây. Tôi cũng đã thêm một số liên kết cũng để giúp bạn hiểu quá trình xây dựng một cách tốt hơn.
Prakash

1

Đây là các loại quy trình khác nhau mà bạn có thể hoàn thành các bản dựng của mình.

1. Xây dựng tích hợp liên tục:Trong phần này, chủ yếu là các nhà phát triển đăng ký mã của họ và ngay sau khi họ đăng ký bản dựng để xây dựng các thay đổi gần đây, vì vậy chúng tôi nên biết liệu các thay đổi được thực hiện bởi nhà phát triển có hoạt động hay không ngay sau khi đăng ký được thực hiện. Điều này được ưa thích cho các dự án nhỏ hơn hoặc các thành phần của dự án. Trong trường hợp nhiều nhóm được liên kết với dự án hoặc không có lớn. trong số các nhà phát triển làm việc trong cùng một dự án, kịch bản này trở nên khó xử lý như thể không có. về việc đăng ký và xây dựng không thành công tại một số điểm nhất định, rất khó để theo dõi liệu tất cả các sự cố đã xảy ra do một vấn đề hay do nhiều vấn đề vì vậy nếu các vấn đề cũ không được giải quyết đúng cách thì sẽ rất khó để theo dõi sau này khiếm khuyết xảy ra sau sự thay đổi đó.

2. Bản dựng đăng ký có kiểm soát: Trong loại kiểm tra này, bản dựng được bắt đầu ngay sau khi đăng ký xong, giữ các thay đổi trong bộ giá đỡ. Trong trường hợp này, nếu quá trình xây dựng thành công hơn so với đăng ký đặt tạm thời được cam kết nếu không, nó sẽ không được cam kết với Team Foundation Server. Điều này mang lại một bức tranh tốt hơn một chút từ việc xây dựng tích hợp liên tục vì chỉ những người đăng ký thành công mới được phép cam kết.

3. Bản dựng hàng đêm: Đây cũng được gọi là bản dựng theo lịch trình. Trong trường hợp này, chúng tôi lên lịch các bản dựng để chạy trong một thời gian cụ thể để xây dựng các thay đổi. Tất cả các thay đổi không được cam kết trước đó từ bản dựng cuối cùng được xây dựng trong quá trình xây dựng này. Điều này được thực hiện khi chúng tôi muốn kiểm tra nhiều lần nhưng không muốn xây dựng mỗi lần chúng tôi kiểm tra mã của mình để chúng tôi có thể có thời gian hoặc thời gian cố định để chúng tôi có thể khởi tạo bản dựng để xây dựng mã đăng ký.

Chi tiết hơn về các bản dựng này có thể được tìm thấy ở vị trí bên dưới.

Kiểm tra Gated trong bản dựng

Xây dựng tích hợp liên tục

Xây dựng hàng đêm


0

Bạn đã và đang sử dụng chúng - IDE là một công cụ xây dựng. Đối với dòng lệnh, bạn có thể sử dụng những thứ nhưmake .

Mọi người sử dụng các công cụ dòng lệnh cho những thứ như bản dựng hàng đêm - vì vậy vào buổi sáng với sự nôn nao, lập trình viên đã nhận ra rằng mã mà anh ta đã sử dụng với các bản dựng mới nhất của các thư viện không hoạt động!


11
Thông thường IDE không phải là một công cụ xây dựng, thay vào đó nó tích hợp với / gọi một công cụ xây dựng. Ví dụ, Visual Studio Normaly gọi MSBuild.
Justin

-1

"... Rất khó để theo dõi những gì cần được xây dựng" - Công cụ xây dựng không giúp được gì cho tất cả. Bạn cần biết những gì bạn muốn xây dựng. (Trích dẫn từ câu trả lời của Ritesh Gun)

"Tôi nghe nói chúng được sử dụng gần như trong tất cả các loại phát triển trong thế giới thực" - Vì một số lý do, các nhà phát triển phần mềm thích làm việc trong các công ty lớn. Họ dường như có nhiều chỉ thị công việc không rõ ràng cho mọi cá nhân làm việc ở đó.

"Tại sao tôi không bao giờ cần chúng trong bốn năm qua". Có lẽ bởi vì bạn là một lập trình viên lành nghề.

Giả, meta. Tôi nghĩ rằng các công cụ xây dựng không cung cấp bất kỳ lợi ích thực sự nào cả. Nó chỉ ở đó để thêm một cảm giác an toàn phát sinh từ thực tiễn công ty tồi, thiếu định hướng - lãnh đạo kiến ​​trúc phần mềm xấu dẫn đến kiến ​​thức thực tế xấu về dự án. Bạn không bao giờ phải sử dụng các công cụ xây dựng (để thử nghiệm) trong dự án của mình. Để thực hiện kiểm tra ngẫu nhiên với sự thiếu kiến ​​thức về dự án phần mềm không cung cấp bất kỳ loại trợ giúp nào.

Bạn không bao giờ nên thêm một cái gì đó vào một dự án mà không biết mục đích của nó và cách nó sẽ hoạt động với các thành phần khác. Các thành phần có thể được chức năng riêng biệt, nhưng không hoạt động cùng nhau. (Đây là trách nhiệm của kiến ​​trúc sư phần mềm tôi đảm nhận).

Điều gì nếu 4-5 thành phần được thêm vào dự án. Bạn thêm một thành phần thứ 6. Cùng với thành phần được thêm vào đầu tiên, nó có thể làm hỏng mọi thứ. Không có tự động sẽ giúp phát hiện điều đó.

Không có lối tắt nào khác ngoài suy nghĩ nghĩ nghĩ.

Sau đó là tải về tự động từ kho lưu trữ. Tại sao bạn muốn làm điều đó? Bạn cần biết những gì bạn tải xuống, những gì bạn thêm vào dự án. Làm thế nào để bạn phát hiện những thay đổi trong các phiên bản của kho lưu trữ? Bạn cần phải biết rằng. Bạn không thể "tự động" bất cứ điều gì.

Điều gì sẽ xảy ra nếu chúng ta kiểm tra xe đạp và vận chuyển em bé bịt mắt bằng một cây gậy và chỉ ngẫu nhiên đánh xung quanh nó. Đó dường như là ý tưởng của thử nghiệm công cụ xây dựng.

Tôi xin lỗi, không có phím tắt https://en.wikipedia.org/wiki/Sellectific_methodhttps://en.wikipedia.org/wiki/Analysis


Câu trả lời của bạn cực kỳ sai lệch theo quan điểm C trong đó đây là một vấn đề lớn. Các công cụ xây dựng rất cần thiết cho bất cứ điều gì phức tạp hơn là chạy trình biên dịch (ngay cả khi đó, gcc là một từ b lớn) và quản lý phụ thuộc với các khai báo phụ thuộc chặt chẽ là một ơn trời. Chỉ vì bạn không sử dụng nó không có nghĩa đây là những khái niệm tồi. Nếu bạn chỉ đơn giản là sử dụng các tập lệnh bash để xây dựng công cụ, thì đó cũng là một công cụ xây dựng - không phải là một công cụ rất tốt. Nếu bạn biên dịch bằng tay hoặc thông qua ide độc ​​quyền thì có thể thượng đế sẽ ở bên bạn cho các bản dựng phức tạp, có thể lặp lại trên các hệ thống khác nhau.
RecursiveExceptionException
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.