문제

이것은 지금 몇 년 동안 나를 괴롭 히고 있었고, 나는 당신 중 하나가 잘 알고있을 것이라고 생각했습니다. Eclipse의 .classpath 파일에서 실제로 사용되는 ClassPathentry 요소의 combineaccessrules 속성은 무엇입니까?

Java Build Path Config 대화 상자에서 조정할 수있는 것을 볼 수 있지만 좋은 사용 사례는 생각할 수 없습니다. 설정에 관심이 있거나 .classpath 파일을 수동으로 수정하면 효과가없는 것 같습니다.

나는 다른 사람이 그것을 잘 활용하기를 바라고 있으며, 그들의 아이디어를 훔칠 수 있습니다. 기본적으로, 그것은 내가 긁히려는 가려움증입니다.

도움이 되었습니까?

해결책

액세스 규칙을 올바르게 사용하면 "내부"및/또는 "API가 아닌"클래스 및 메소드 사용을 방지 할 수 있습니다. 클래스 나 패키지를 추가 할 때 금지 된 또는 낙담 컴파일러는 지정된 패키지에서 해당 클래스 또는 클래스를 사용할 때 오류 또는 경고를 표시합니다. 액세스 규칙을 더 긴 소개하려면 읽어야합니다. 이 짧은 기사.

Combine Access 규칙을 사용하려면 다음 상황을 상상해보십시오.

  • A와 B의 2 개 프로젝트가 있습니다.
  • 프로젝트 A의 클래스 경로에는 내보내는 JAR 파일이 있습니다. JAR에는 "안정 API", "불안정한 API"및 "비 API"공개 클래스가 포함되어 있습니다.
  • 프로젝트 B는 프로젝트 A에 따라 다릅니다.

프로젝트 A에서 "비 API"클래스를 사용하지 않으므로 일부 설정 금지 된 해당 클래스 / 패키지에 대한 규칙에 액세스하십시오.

프로젝트 B에서는 "비 API"를 사용하지 않지만 "불안정한 API"를 사용할 때 경고를 받고 싶습니다. 이 경우 프로젝트 B에서는 추가를 설정하면됩니다. 낙담 액세스 규칙을 확인하면 규칙을 내보낸 프로젝트 항목의 액세스 규칙과 결합.

다른 팁

액세스 규칙은 편리한 작은 것이지만 위험합니다. 프로젝트 컴파일러에서 소스 파일을 제외하지만 파일을 파일 시스템에 그대로 두십시오.

내가 작업하는 프로젝트에는 소스 폴더 중 하나에 부트 스트랩 클래스가 있지만 전체 폴더를 포함하면 프로젝트 클래스 경로가 컴파일되지 않습니다 (긴 스토리이며 빌드 프로세스가이를 처리합니다).

따라서 우리는 Eclipse Access 규칙을 사용하여 그것을 배제하며 개발 중에 우리를 귀찮게하지 않습니다. 이것은 우리가 코드를 쉽게 변경할 수 없다는 것을 의미하지만, 문자 그대로 몇 년 동안 접촉하지 않은 클래스 중 하나입니다.

Javadoc이 판단하는 액세스 규칙을 결합하는 것은 실제 에지 사용 사례입니다. 그것을 사용하려면 다음을 수행해야합니다.

  • 한 프로젝트의 내보내기 소스 항목의 액세스 규칙
  • 학부모 프로젝트의 해당 프로젝트 링크
  • 하위 프로젝트의 액세스 규칙을 부모와 결합해야합니다.

나는 그것이 어떻게 유용한 지 말할 수 없지만 적어도 당신의 "그것이 무엇인가"질문에 대답하기를 바랍니다. :)

나는 그것을 직접 사용한 적이 없지만 약간의 내용을 찾을 수 있습니다. 여기.

프로젝트의 내보내기 항목의 액세스 규칙 이이 항목의 액세스 규칙과 결합되어야하는지 여부

액세스 규칙은 "com/tests/**"를 포함하는 것과 같습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top