У меня есть 2 артефакта Maven с 2 версиями, скажем, A1, A2, B1, B2. B1 зависит от A1, B2 зависит от A2. A1 и A2 очень похожи, скажем, что A1 использует Java 7, а A2 использует Java 8 и lambdas. Все артефакты используются нашими клиентами, и иногда они устанавливают неправильный артефакт для своей среды.Maven - выберите артефакты во время выполнения
Я хочу построить базу Артефакт A1 и A2 наследует A и добавляет пользовательские функциональные возможности и другой артефакт A_Client, и я хочу выбрать runtime
на основе некоторых свойств (JDK и некоторых других), для которых модуль Ax использоваться. Таким образом, нашим клиентам придется установить A_Client, и им не придется беспокоиться о правильной версии.
B1 и B2 - это то же самое, единственное, что отличается от их зависимости от Ax. Если я могу каким-то образом объединить A1 и A2, у меня будет только артефакт B, доступный для клиентов, который будет зависеть только от A_Client. Таким образом я также устраню версии B.
Итак, вопрос: Можно ли определить в runtime
зависимости? Я предполагаю, что это возможно с использованием OSGi или пользовательских загрузчиков классов, но у меня очень ограниченные знания в обеих областях, поэтому любая помощь приветствуется.
Примечание: область «предоставлена» предназначена для артефактов, которые волшебным образом появятся во время выполнения. Однако у меня нет опыта в обеспечении выбора подходящего артефакта. Я оставлю ответ кому-то более осведомленному. –
Поместите свои банки в папку и добавьте их в путь к классам на основе определенного свойства, используя что-то вроде: http://stackoverflow.com/questions/1010919/adding-files-to-java-classpath-at-runtime – ieugen