.classpath và .project - kiểm tra kiểm soát phiên bản hay không?


87

Tôi đang chạy một dự án java mã nguồn mở bao gồm nhiều mô-đun trong một cây phụ thuộc. Tất cả các mô-đun đó là các thư mục con trong một kho lưu trữ chuyển đổi. Đối với những người mới tham gia dự án của chúng tôi, việc thiết lập tất cả những thứ đó theo cách thủ công trong eclipse là rất nhiều công việc.

Không phải tất cả các nhà phát triển của chúng tôi đều sử dụng nhật thực. Tuy nhiên, chúng tôi đang xem xét chỉ kiểm tra các tệp .classpath và .project để giúp những người mới bắt đầu. Đây có phải là một ý tưởng tốt? Hay điều đó sẽ dẫn đến xung đột liên tục trong các tệp đó? Có cách nào khác để giúp dự án dễ dàng thiết lập trên nhật thực không?


Câu trả lời:


65

Chắc chắn là có, như tôi đã nói trong " Bạn có giữ các tệp dự án của mình dưới sự kiểm soát của phiên bản không? "

"Tải lên, thiết lập, đi."

Nhưng ... điều này thực sự chỉ đúng với các cài đặt Eclipse3.5 gần đây, nơi các đường dẫn xây dựng hỗ trợ các đường dẫn tương đối :

Xây dựng đường dẫn hỗ trợ đường dẫn tương đối


Và Eclipse3.6 sẽ tốt hơn, vì nó hỗ trợ các đường dẫn tương đối cho các biến đường dẫn trong Linked Resources:

biến đường dẫn với đường dẫn tương đối
(kể từ 3.6M5)


2
Wow, tôi không biết họ đã thêm điều này ... Sẽ giúp chúng tôi bớt đau buồn
Uri

Có vẻ như những hình ảnh được liên kết với câu trả lời này là không chính xác.
vkraemer

1
@vkraemer: đúng. Bây giờ tôi đã khôi phục hai ảnh đó, bức đầu tiên đến từ archive.eclipse.org/eclipse/downloads/drops/R-3.5-200906111540/… và bức thứ hai từ download.itemis.com/mirror/eclipse/R-3.6 -201006080911./… .
VonC

17

Chắc chắn là không - nói chung là một ý tưởng tồi tệ khi phân phối các tệp dự án thông qua lật đổ. Đặc biệt là vì ai đó có thể sửa đổi chúng theo một cách kỳ lạ nào đó. Một trang tốt trong tài liệu của dự án là một ý tưởng tốt hơn nhiều. Dự án của chúng tôi cũng có nhiều mô-đun và thiết lập phức tạp. Chúng tôi đã thiết lập một trang hợp lưu mô tả cách bắt đầu với dự án trên mỗi IDE phổ biến - IntelliJ, Eclipse, NetBeans. Tệp README trong Subversion chứa cùng một thông tin.


31
Tôi không thể đồng ý. Theo kinh nghiệm của tôi, tốt nhất là bạn nên kiểm tra các tệp tin này để làm cho việc thanh toán dễ dàng nhất có thể. Ai đó có thể thay đổi chúng theo một cách kỳ lạ nào đó? Ai đó có thể thay đổi mã của bạn theo một cách kỳ lạ nào đó ...
Arne Deutsch

Arne, bạn nên coi đó là một câu trả lời, không phải một bình luận.
amarillion

5
Các tệp dự án cho bất kỳ IDE nào thực sự không phải là một phần của bất kỳ dự án nào - nếu bạn muốn phân phối chúng - hãy đi ahed - đính kèm chúng vào bài viết tôi đã đề cập. Nói chung, mọi người trong nhóm đều có thể sửa đổi tệp trong repo, nhưng không phải ai cũng có thể đính kèm tệp mới vào các nút tài liệu quan trọng, v.v. Rất dễ để ai đó quên bỏ qua classpath và tệp dự án và cam kết chúng khi không nên. Ngay cả khi bạn giữ họ trong tình trạng lật đổ - bạn chắc chắn nên giữ họ ở đâu đó bên cạnh ...
Bozhidar Batsov

8
-1, không thể không đồng ý hơn. Cài đặt dự án là một phần quan trọng của công việc hàng ngày với một dự án. Nhược điểm của việc vô tình kiểm tra cài đặt sai nhỏ hơn nhiều so với lợi thế của việc tự động cập nhật cho mọi người. Sau cùng, bạn luôn có thể dễ dàng quay lại các phiên bản trước.
Michael Borgwardt

7
Mọi người đều có quyền có ý kiến. Thực tế là ngay từ đầu, tôi sẽ không bao giờ tạo một dự án dựa vào hệ thống dự án của Eclipse (hoặc bất kỳ IDE nào khác) ... Maven là công cụ hiểu dự án cuối cùng và khiến các thiết lập cụ thể của IDE trở nên lỗi thời. Btw thời gian để nhận thấy rằng có điều gì đó không ổn với cài đặt hiện tại và quay lại bản sửa đổi trước đó không có khả năng khác với thời gian tự điều chỉnh bất kỳ cài đặt mới nào. Ít nhất trong công ty của tôi, mọi người trong nhóm đều được thông báo qua e-mail nếu cần có sự can thiệp của người dùng sau những thay đổi lớn hơn.
Bozhidar Batsov

10

Tôi bỏ phiếu không, nhưng đó là vì tôi thường tạo các tệp này từ maven


M2E không nhất nhưng không phải tất cả mọi thứ cho bạn
Junchen Liu

6

Theo kinh nghiệm của tôi, loại trừ những trường hợp hạn chế có liên quan đến cài đặt cục bộ thuần túy, mọi thứ phải nằm trong kiểm soát nguồn. Luật kiểm soát nguồn là mọi thứ được đẩy vào phải được mong đợi hoạt động bởi những người rút ra. Thật không may, nhật thực thường gây ra những thứ như thế này trong .classpath:

    <classpathentry kind="con" 
      path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/Java SE 7"/>

Vì vậy, trên máy Mac của tôi, điều này hoạt động và có thể ai đó trên máy Mac có cùng JRE, nhưng điều này sẽ không hoạt động với bất kỳ ai khác.

Ngoài ra, không có cách nào dễ dàng để giải quyết vấn đề này. Eclipse sẽ luôn thêm tệp đó vào. Tôi MUỐN có tệp .classpath trong đó, vì có một số JAR của bên thứ 3 trong thư mục lib của chúng tôi nơi chúng tôi quan tâm đến việc lập phiên bản, vì vậy chúng tôi để chúng ở đó để các nhà phát triển mới không phải lấy chúng . Chúng tôi đang chuyển sang hệ thống được quản lý, nhưng vẫn kiểm tra các phần phụ thuộc được quản lý + không được quản lý. Điều này có nghĩa là tất cả các nhà phát triển chỉ cần đảm bảo hai thư mục nằm trong .classpaths của họ . Nhưng tốt hơn là bạn phải sửa JRE của mình mỗi lần bạn kéo và có sự thay đổi trong .classpath của bạn mỗi khi bạn cam kết.

Eclipse thực hiện một số điều tốt đẹp khác cho bạn. Tệp .project thường sẽ giống nhau giữa các phiên bản, vì vậy hãy bao gồm tệp đó. Nhưng điều tốt nhất về kiểm soát nguồn cho eclipse là cài đặt Cấu hình Chạy. Trong tab "Chung" trong hộp thoại Chạy Cấu hình, hãy lưu các cấu hình để chúng xuất hiện cho đồng nghiệp của bạn trong danh sách yêu thích cho Gỡ lỗi và Chạy. Đối với tôi, một loạt các .launchtệp đi trong .settingsthư mục, vì vậy tất cả chúng ta đều có thể sử dụng chúng.

Vì vậy, tôi nói: .settingsthư mục đi vào kiểm soát nguồn cho các cấu hình khởi chạy (ngoại trừ * .prefs)

.classpath ở ngoài

.project đi vào.


Đây có phải là trường hợp ngay cả khi sử dụng môi trường thực thi cho JRE / JVM không?
Mr_and_Mrs_D

5

Tôi sẽ kiểm tra các tệp này để bắt đầu cho người dùng mới dễ dàng nhất có thể. Tốt nhất người dùng nên kiểm tra dự án và có thể chạy nó mà không cần thêm kiến ​​thức. Đối với tệp này, các quy tắc cũng giống như đối với các tệp khác trong dự án: xử lý chúng một cách cẩn thận. Bạn không nên đặt các dấu vết tuyệt đối vào mã nguồn, cho dù bạn nên đặt trong các tệp cấu hình.

Nếu các tệp được kiểm tra theo cách mà dự án chạy từ đầu thì không có nhiều lực để thay đổi chúng.


5

Tôi khuyên bạn nên kiểm tra các tệp trong bản lật ngược NẾU chúng không chứa các đường dẫn tuyệt đối và dữ liệu khác sẽ liên kết chúng trực tiếp với môi trường của một nhà phát triển duy nhất.

Nếu các tệp chứa đường dẫn tuyệt đối và những thứ tương tự, thì README sẽ là lựa chọn tốt hơn.


2

Có, chắc chắn hãy kiểm tra chúng, nhưng hãy đảm bảo rằng bạn ghi lại mọi phụ thuộc đường dẫn và tránh các đường dẫn tuyệt đối nếu có thể.

Nếu bạn không kiểm tra chúng, thì bất kỳ ai kiểm tra dự án sẽ cần phải tạo lại tất cả các cài đặt đó, điều này gây khó chịu và có khả năng xảy ra lỗi.

Một số thiết lập phức tạp có thể được xử lý tốt hơn bởi một tập lệnh để tạo các tệp này, nhưng thông thường tốt hơn là chỉ cần kiểm tra chúng.

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.