Я хочу сравнить две модели, которые соответствуют данной метамодели ecore, например:
public void compare() {
URI uri1 = URI.createFileURI("file1.xmi");
URI uri2 = URI.createFileURI("file2.xmi");
Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("xmi", new XMIResourceFactoryImpl());
ResourceSet resourceSet1 = new ResourceSetImpl();
ResourceSet resourceSet2 = new ResourceSetImpl();
resourceSet1.getResource(uri1, true);
resourceSet2.getResource(uri2, true);
IComparisonScope scope = new DefaultComparisonScope(resourceSet1, resourceSet2, null);
Comparison comparison = EMFCompare.builder().build().compare(scope);
List<Diff> differences = comparison.getDifferences();
// Let's merge every single diff
IMerger.Registry mergerRegistry = new IMerger.RegistryImpl();
IBatchMerger merger = new BatchMerger(mergerRegistry);
merger.copyAllLeftToRight(differences, new BasicMonitor());
}
Если я запускаю этот код, я получаю ошибку Package with uri '/uri/of/the/package' not found
, которая является URI метамодели. Пробовал зарегистрировать модель ecore через правый клик и потом Register EPackages
, но не получилось. Что я делаю не так? Как я могу зарегистрировать пакет (я предпочитаю статически, но динамически тоже будет работать).