2013-02-14 3 views
1

Есть ли способ подключиться к компилятору Eclipse, чтобы указать логику чтения/разрешения/загрузки класса, когда скомпилирован исходный файл Java? Я не уверен, что такое правильный термин, но по существу эквивалент времени компиляции «загрузки класса», который происходит во время выполнения.Пользовательская загрузка класса компиляции в Eclipse?

Например, у меня есть источник Java:

package foo; 

import bar.Bar; 

public final class Foo { 
    // getQux() returns type: qux.Qux 
    private final Bar bar = baz.Baz.getQux().getBar(); 

    [...] 
} 

Компилятор должен потребовать, чтобы 3 класса считываются при компиляции исходного файла foo/Foo.java:

  • bar.Bar - Он указан как Импортировать.
  • baz.Baz - Используется в полной форме (... = baz.Baz.getQux()...).
  • qux.Qux - Это «косвенная» зависимость (она возвращается вызовом baz.Baz.getQux(), который, в свою очередь, используется для доступа к bar.Bar по вызову метода getBar()).

Я хотел бы иметь возможность перехватывать каждый из этих «запросов класса», чтобы я мог предоставить пользовательскую логику для получения рассматриваемого класса (возможно, он живет в базе данных, возможно, он обслуживается некоторым сервером где-то и т. д.).

Кроме того, мне бы хотелось, чтобы не было попытки скомпилировать любые исходные файлы в проекте Eclipse до тех пор, пока пользователь не будет явно открыт. Поэтому в приведенном выше примере запросы 3 класса (bar.Bar, baz.Baz, qux.Qux) не создаются до тех пор, пока пользователь не откроет исходный файл foo/Foo.java. В идеале список исходных файлов в проекте не обязательно должен быть фактическими файлами в файловой системе (возможно, они тоже живут в базе данных и т. Д.), И попытка компиляции выполняется только тогда, когда пользователь открывает/загружает исходный файл.

Я понимаю, что, если возможно, это имеет некоторые недостатки. Например, если я редактирую исходный файл foo/Foo.java, чтобы сделать класс «приватным пакетом», он будет тихо разбивать любой класс, который зависит от foo.Foo, пока не будет выполнен «полный» компиляция проекта. Пока что это хорошо для моих целей (есть вещи, которые я могу сделать позже, чтобы решить это).

Любые идеи/предложения?

Спасибо!

ответ

0

Возможно, нет, это подпадает под часть Java-сборки JDT, и я не думаю, что у нее есть такой уровень настройки. Для этого не существует документированной точки расширения. Чтобы получить окончательный ответ, вам нужно посмотреть на источник. Вероятно, вы могли бы добавить эту возможность, и это будет означать, что вам понадобится использовать альтернативную версию JDT, что может быть сложно или невозможно.

+0

Спасибо за ваш ответ! Я подозревал, что :( – alopecoid

Смежные вопросы