Это проблематично. Я создал хранилище Subversion, позволяющее управлять версией доставки стандартных отчетов, но это реальная боль, потому что Jasper не делает это даже немного легким.
Я создал проект maven с дескриптором сборки, чтобы «src / main / xml / resources / Reports, adhoc, Domains и т. Д.» Можно было упаковать в zip-архив, который помещается в наш репозиторий maven.
Самая большая проблема заключается в том, что вы не можете просто разработать adhoc и средства управления вводом, просто изменив XML-файлы. Разработчик должен импортировать то, что находится в системе контроля версий, на работающий сервер jasper, изменить отчеты или добавить новые (убедившись, что его организация и источники данных настроены) и, убедившись, что отчеты работают, экспортировать ресурсы в каталог или zip-файл вручную измените все ссылки в экспортируемых файлах из источников данных и местоположений, специфичных для организации, обратно на «универсальный», прежде чем регистрировать его изменения.
При импорте в яшму тот же процесс должен быть выполнен в обратном порядке. Общие пути и значения организации должны быть преобразованы в организацию разработчика, чтобы их можно было легко импортировать / обновлять, и он может доказать, что полный «круговой оборот» работает должным образом перед регистрацией.
Чтобы упростить регистрацию экспорта / подрывной деятельности, я создал файл сборки ant, который находится в корневом каталоге проекта maven. Сборка запрашивает (или будет читать файл свойств), чтобы определить расположение экспортируемого zip, идентификатор организации экспортируемого дерева. Затем он открывает экспортированный zip-файл из jasper, взрывает его, выполняет замену текста в файлах, сбрасывает элементы «creationDate» и «updatedDate» в нечто стандартное (чтобы разработчик не заканчивал проверкой файлов, которые на самом деле не изменились) поскольку яшма не сохраняет значения даты), а затем скопируйте файлы в дерево подрывной деятельности.
Для процесса импорта (из дерева подрывной деятельности в jasper) у нас есть скрипт, который принимает в качестве входных данных идентификатор организации, а затем изменяет версионные файлы XML на соответствующие значения, чтобы все дерево можно было легко импортировать / обновить в их организация.
Причина, по которой этот уровень сложности необходим, заключается в том, что мы можем создавать одни и те же стандартные отчеты в мультитенантной среде, плюс представление Джаспера о развертывании отчетов абсолютно странно. Я не уверен, что было бы возможно усложнить этот процесс, если бы вы собирались это сделать.