Я хочу создать файл класса java с классом с длинной многострочной строковой константой. (Обычный способ поместить строку в отдельный файл и загрузить ее из того же JAR-файла, что и класс, не вариант. Не будет JAR-файла, только этот файл класса.) Первоначально я использовал multiline-string обработчик аннотаций, позволяющий размещать содержимое строки в комментарии к документу:
/**
* This will be the actual
* content of the string
**/
@Multiline static final String foo = "this literal is ignored";
Тут я ошибочно подумал: "ой, комментарии неудобны, почему бы не изменить multiline-string на загрузку содержимого из внешнего файла?" Оказывается, это работает, но maven (который я использую для сборки), конечно, не понимает, что файл класса нужно перекомпилировать, если файл, читаемый обработчиком аннотаций, изменен.
Подходы:
- установить
useIncrementalCompilation
tofalse
: совсем не делает того, что я ожидал, вместо этого отключает проверку зависимостей для инкрементных сборок - добавьте
.py
вfileExtensions
a> (не ожидал, что это сработает) - добавьте
maven-clean-plugin
как часть фазы инициализации: это работает, но немного излишне…
Что я действительно хотел бы сделать, так это добавить путь к встроенному файлу в список maven «если этот файл изменится, перекомпилируйте этот файл». Возможно ли это, или есть другой, элегантный способ решить эту проблему?