Добавление конструкторов в проект в Eclipse и Incremental-ness - PullRequest
7 голосов
/ 15 сентября 2011

У меня есть проект Java, со стандартным Java Builder, выбранным в качестве единственного разработчика. Также сборка настроена на сборку автоматически.

Что я хотел бы понять, так это обстоятельства сборки, когда я добавляю сборку ant в этот проект (project -> properties -> builders). Я ожидаю, что каждый раз, когда я изменяю свой исходный код Java, будет работать и Java Builder, и моя сборка ant, но не похоже, что моя сборка ant работает.

Когда я впервые добавляю сборку ant, она запускается, т.е. я вижу вывод в консоли. Однако, когда я вносю изменения в мои исходные файлы, он больше не запускается, т.е. я не вижу вывод в консоли. Я знаю, что Java Builder все еще работает из-за того, что мои изменения вошли в понимание кода Eclipses, то есть я могу ссылаться на эти изменения из других классов и т. Д.

Обратите внимание, что если я вручную вызываю сборку, т. Е. Через Project -> Build All, запускается сборка ant, т.е. я снова вижу вывод в консоли.

Итак, почему сборка муравья, которую я добавил, не работает с автоматическим сборкой? Обратите внимание, я не обязательно ожидал, что он сможет выполнять инкрементную работу, поскольку он не предназначен для этого, но я бы подумал, что он сработает, когда сработает Java Builder? Я что-то упустил?

Ответы [ 2 ]

1 голос
/ 27 октября 2012

У строителя муравьев или любого другого строителя в этом отношении есть несколько способов построения проекта. Когда в Eclipse происходит сборка, вызывается метод build(int kind, Map<String, String> args, IProgressMonitor monitor) всех активных сборщиков, но существуют различные виды сборок, которые любой сборщик проверяет в методе build. Виды сборки:

FULL_BUILD
AUTO_BUILD
INCREMENTAL_BUILD
CLEAN_BUILD

Вот пример синтаксиса сборки:

protected IProject[] build(int kind, Map<String, String> args, IProgressMonitor monitor) throws CoreException {
    if (kind == FULL_BUILD) {
        fullBuild(monitor);
    } else {
        IResourceDelta delta = getDelta(getProject());
        if (delta == null) {
            fullBuild(monitor);
        } else {
            incrementalBuild(delta, monitor);
        }
    }
    return null;
}

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

0 голосов
/ 27 октября 2012

Вы сконфигурировали Ant Builder для запуска во время автоматической сборки? Для этого выберите свойства компоновщика, перейдите на страницу Targets и используйте Set Targets для Auto Build.

У меня есть Ant-компоновщик, который работает в моем проекте Eclipse на всех видах сборок (так же как и при сохранении отредактированных исходных файлов), и я не помню, чтобы что-то еще менял.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...