У нас довольно странное требование.
Пружинная загрузка с несколькими проектами
xbean - это старая версия xmlbeans apache jar
Мы хотимиспользовать оба
- xbean old jar с некоторыми пользовательскими изменениями в одном и том же jar
- последние xmlbeans apache jar
у нас текущая реализация как
Main () -
| - проект XLSImportProject - для которого требуется последний файл jar для чтения файла xlsx
| - проект B - для которого требуется старый файл jar для пользовательской операции
|- C проект - также требовать старый jar для пользовательской операции
Если мы отдадим maven приоритет xbean old jar , тогда мы получим исключение как
org.apache.poi.ooxml.POIXMLException: org.apache.xmlbeans.XmlOptions.setEntityExpansionLimit(I)Lorg/apache/xmlbeans/XmlOptions;
at org.apache.poi.ooxml.POIXMLFactory.createDocumentPart(POIXMLFactory.java:66)
at org.apache.poi.ooxml.POIXMLDocumentPart.read(POIXMLDocumentPart.java:648)
at org.apache.poi.ooxml.POIXMLDocument.load(POIXMLDocument.java:180)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:286)
at org.apache.poi.xssf.usermodel.XSSFWorkbookFactory.createWorkbook(XSSFWorkbookFactory.java:83)
at org.apache.poi.xssf.usermodel.XSSFWorkbookFactory.createWorkbook(XSSFWorkbookFactory.java:130)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.poi.ss.usermodel.WorkbookFactory.createWorkbook(WorkbookFactory.java:314)
at org.apache.poi.ss.usermodel.WorkbookFactory.createXSSFWorkbook(WorkbookFactory.java:296)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:214)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:180)
Если мы дадимmaven приоритет для последних xmlbeans , тогда будут ошибки:
Exception in thread "Thread-14" java.lang.NoSuchMethodError: org.apache.xmlbeans.XmlObject.getParent()Lorg/apache/xmlbeans/XmlObject;
Мы должны использовать старый jbean jar в подпроекте и последний jmlbeans jar в другом проекте.
Но Spring всегда будет банкой, которая определяется первой в зависимости.