2009-06-23 37 views
29

Điều này đã làm tôi thất vọng nhiều năm nay, và tôi nghĩ một trong những người tốt của bạn sẽ biết - trong các tệp .classpath của Eclipse, thuộc tính combineaccessrules của phần tử classpathentry thực sự được sử dụng để làm gì?Combineaccessrules có nghĩa là gì trong các classpath Eclipse?

Tôi có thể thấy trong hộp thoại cấu hình Đường dẫn xây dựng Java mà nó có thể được maniuplated, nhưng tôi không thể nghĩ ra một trường hợp sử dụng tốt cho nó. Nếu tôi muck về với các thiết lập, hoặc sửa đổi các tập tin .classpath bằng tay, nó dường như không có bất kỳ tác dụng.

Tôi hy vọng một người nào khác đã sử dụng nó để sử dụng tốt và tôi có thể ăn cắp ý tưởng của họ. Về cơ bản, đó là một ngứa Tôi đang cố gắng để làm xước.

Trả lời

25

với việc sử dụng hợp lý các quy tắc truy cập bạn có thể ngăn chặn sử dụng các lớp và phương thức "nội bộ" và/hoặc "không phải api". Khi bạn thêm một lớp hoặc gói là Bị cấm hoặc Không khuyến khích trình biên dịch hiển thị lỗi hoặc cảnh báo khi bạn sử dụng lớp hoặc lớp đó từ gói được chỉ định. Để giới thiệu quy tắc truy cập dài hơn, bạn nên đọc this short article.

Để sử dụng kết hợp quy tắc truy cập tưởng tượng tình huống sau đây:

  • Bạn có 2 dự án, A và B.
  • Trên classpath của dự án A có một file jar đó được xuất khẩu. Bình chứa một số "api ổn định", "api không ổn định" và "không api" các lớp công khai.
  • Dự án B phụ thuộc vào dự án A.

Bạn không cho phép sử dụng "non-api" lớp học trong dự án A, do đó bạn thiết lập một số Forbidden quy tắc truy cập vào những lớp học/gói.

Trong dự án B, bạn cũng không cho phép sử dụng "không phải api", nhưng bạn muốn nhận cảnh báo khi sử dụng "api không ổn định". Trong trường hợp này trong dự án B, bạn chỉ phải đặt thêm các quy tắc truy cập được khuyến khích nếu bạn kiểm tra các quy tắc kết hợp của các mục nhập dự án đã xuất.

+0

Câu trả lời hay và trường hợp sử dụng tuyệt vời. Tôi không nghĩ rằng tôi sẽ kết thúc bằng cách sử dụng tính năng của nhật thực, nhưng nó là tốt đẹp để cuối cùng biết những gì nó cho. Cảm ơn. – skaffman

+1

Nếu bạn sử dụng một dự án trình cắm thêm thay vì một dự án Java bình thường, thì PDE sẽ tự động tạo các quy tắc truy cập này cho bạn dựa trên tệp kê khai của bạn. –

1

mặc dù tôi chưa bao giờ sử dụng bản thân mình, bạn có thể tìm thấy một chút thông tin here.

dù các quy tắc truy cập các mục xuất khẩu của dự án nên được kết hợp với các quy tắc truy cập của cụm từ này

các quy tắc truy cập sẽ là một cái gì đó giống như bao gồm cả "com/kiểm tra/**"

3

truy cập quy tắc là những điều nhỏ nhặt tiện lợi nhưng nguy hiểm. Chúng loại trừ một tệp nguồn từ trình biên dịch dự án nhưng để nguyên tệp còn nguyên trong hệ thống tệp.

Dự án tôi làm việc có lớp bootstrap trong một trong các thư mục nguồn của chúng tôi, nhưng nếu chúng tôi bao gồm toàn bộ thư mục đường dẫn dự án thì nó sẽ không biên dịch (đó là một câu chuyện dài và quá trình xây dựng xử lý này).

Vì vậy, chúng tôi sử dụng quy tắc truy cập nhật thực để loại trừ quy tắc đó và nó không bao giờ làm phiền chúng tôi trong quá trình phát triển. Điều này có nghĩa là chúng ta không thể dễ dàng thay đổi mã, nhưng đó là một trong những lớp mà theo nghĩa đen đã không được xúc động trong nhiều năm.

Kết hợp các quy tắc truy cập, đánh giá bởi JavaDoc, là trường hợp sử dụng cạnh thực tế. Để sử dụng nó, bạn sẽ phải có:

  • một quy tắc truy cập trong một entry nguồn xuất khẩu của một dự án
  • một liên kết đến dự án mà từ một dự án mẹ
  • một cần phải kết hợp các quy tắc truy cập của tiểu dự án với phụ huynh

tôi thực sự không thể nói như thế nào nó sẽ hữu ích, nhưng tôi hy vọng rằng ít nhất câu trả lời "đó là những gì" câu hỏi của bạn :)