Обычно вы устанавливаете разные исходные каталоги для своего кода и сгенерированного кода.
Например, проект, использующий Xtend и EMF, будет иметь следующие исходные каталоги в своем пути сборки:
src
содержит все файлы Java и Xtend, которые вы пишете xtend-gen
содержит сгенерированные файлы Java, созданные Xtend src-gen
содержит сгенерированные файлы Java, созданные EMF
В этой настройке вы должны редактировать файлы только в src
.Файлы в xtend-gen
будут обновляться автоматически, если вы редактируете файлы Xtend в src
.Файлы в src-gen
будут обновлены, если вы обновите модель.
Я не очень знаком с Xcore, но, поскольку он основан на EMF, я думаю, что вам просто нужно установить свойство "каталог модели"the genmodel.
Это должно сделать различие между вашим кодом и сгенерированным кодом более четким.Вы все еще можете чувствовать необходимость иногда модифицировать сгенерированный код.EMF фактически поддерживает это, добавляя специальные аннотации в сгенерированный файл, но я бы не рекомендовал этого, потому что очень трудно увидеть, был ли файл изменен таким образом.Если вам действительно нужно изменить сгенерированное поведение, лучше использовать первый подход, описанный в этой статье о правильном переопределении сгенерированного кода EMF .По сути, вы расширяете и переопределяете методы некоторых сгенерированных классов и фабрики, а затем используете точки расширения Eclipse для замены сгенерированной фабрики на расширенную.
Если вы смотрите на проект кого-то другого и неНе знаете, какие инструменты генерирования кода используются:
Вы должны попытаться по возможности спросить авторов или проверить, есть ли документация по созданию проекта.В противном случае, я думаю, вам нужно проанализировать структуру проекта, чтобы увидеть, какие плагины используются для генерации кода.Это может быть немного сложно, если вы еще не знаете, какие плагины на самом деле могут генерировать код, хотя.
- Проверьте Eclipse "Project Nature", чтобы увидеть, какие плагины используются дляbuild
- Проверьте конфигурацию сборки (Ant, Maven, Gradle) на наличие плагинов, которые могут генерировать код
- Найдите специальные файлы (xcore, genmodel и т. д.) и выясните, к какому
- Проверьте, настроены ли какие-либо обработчики аннотаций, и проверьте, создают ли они какие-либо файлы
- (только Xtend) Проверьте, есть ли активные аннотации, и проверьте, создают ли они какие-либо файлы
- Проверьте, если
@Generated
в коде используются аннотации, которые используются для маркировки сгенерированных файлов
Если вы определили все инструменты, попробуйте изменить каталог назначения модели и заново создать код.Затем сравните сгенерированные файлы с исходным кодом - все дублированные файлы, скорее всего, сгенерированы.