Что означает combaccessrules в Eclipse classpath? - PullRequest
32 голосов
/ 23 июня 2009

Это беспокоило меня в течение многих лет, и я подумал, что один из вас, замечательные люди, узнает - в файлах .classpath в Eclipse, для чего фактически используется атрибут combaccessrules элемента classpathentry?

В диалоге конфигурации Java Build Path я вижу, что его можно манипулировать, но я не могу придумать хороший вариант его использования. Если я порхаю с настройками или изменяю файл .classpath вручную, это, похоже, не дает никакого эффекта.

Я надеюсь, что кто-то еще нашел это хорошее применение, и я могу украсть их идеи. По сути, это зуд, который я пытаюсь поцарапать.

Ответы [ 3 ]

26 голосов
/ 23 июня 2009

При правильном использовании правил доступа вы можете запретить использование «внутренних» и / или «не-API» классов и методов. Когда вы добавляете класс или пакет как Forbidden или Discouraged , компилятор отображает ошибку или предупреждение при использовании этого класса или класса из указанного пакета. Для более длительного ознакомления с правилами доступа вы должны прочитать эту короткую статью .

Для использования правил доступа комбайна представьте следующую ситуацию:

  • У вас есть 2 проекта, A и B.
  • На пути к классам проекта A находится файл jar, который экспортируется. В банке содержатся публичные классы "stable api", "unstable api" и "non-api".
  • Проект B зависит от проекта A.

Вы не разрешаете использовать классы "non-api" в проекте A, поэтому вы устанавливаете Запрещенные правила доступа для этих классов / пакетов.

В проекте B вы также не разрешаете использовать «non-api», но вы хотите получить предупреждение при использовании «unstable api». В этом случае в проекте B вам нужно только установить дополнительные Отговоренные правила доступа, если вы проверите Объединить правила с правилами доступа экспортированных записей проекта .

3 голосов
/ 23 июня 2009

Правила доступа - удобные мелочи, но опасные. Они исключают исходный файл из компилятора проекта, но оставляют его в файловой системе без изменений.

В проекте, над которым я работаю, есть класс начальной загрузки в одной из наших исходных папок, но если мы включим всю папку, путь к классам проекта не будет скомпилирован (это длинная история, и процесс сборки справится с этим).

Таким образом, мы используем правило доступа eclipse, чтобы исключить его, и оно никогда не беспокоит нас во время разработки. Это означает, что мы не можем легко изменить код, но это один из тех классов, который буквально не затрагивался годами.

Комбинированные правила доступа, судя по JavaDoc, представляют собой реальный пример использования. Чтобы его использовать, вам понадобится:

  • правило доступа в экспортированной исходной записи одного проекта
  • ссылка на этот проект из родительского проекта
  • необходимо объединить правила доступа подпроекта с родительским

Я действительно не могу сказать, как это было бы полезно, но я надеюсь, что, по крайней мере, ответит на ваш вопрос "что это такое":)

1 голос
/ 23 июня 2009

хотя я никогда не использовал его сам, здесь можно найти немного информации .

должны ли правила доступа экспортируемых записей проекта сочетаться с правилами доступа этой записи

правила доступа будут выглядеть примерно так: "com / tests / **"

...