У меня есть следующий сценарий:
mylib - это библиотека (для которой у меня есть источники, поэтому я бы хотел поместить их в проект Maven mylib: например, mylib). Эта библиотека имеет зависимость от jar, для которой у меня есть только jar, и ее нет в репозитории Maven (и я НЕ хочу устанавливать ее там тоже). Чтобы это скомпилировать, сработало бы что-то вроде этого: добавьте файл jar в проект mylib в папке "lib", например, "lib / thirdpartylib.jar" и в файле mylib pom.xml добавьте зависимость с самостоятельно выбранной группой / артефактом / версией и записью "<scope>system</scope><systemPath>${project.basedir}/lib/thirdpartylib.jar</systemPath>
". Проект mylib скомпилируется нормально.
Обратите внимание, что mylib также имеет зависимость во время выполнения от файла dll, скажем Thirdparty.dll. Но для компиляции это не важно.
Однако теперь, что мне интересно, как добиться следующего:
Любые другие проекты, например, Проект "X", который использует mylib, потребует
- mylib.jar
- thirdpartylib.jar
- thirdpartylib.dll
и он должен будет установить java.library.path в каталог (например, ".") Таким образом, чтобы исполняющая виртуальная машина находила сторонние файлы jar и dll.
Мое беспокойство заключается в следующем: я хотел бы, чтобы третьи стороны jar / dll отвечали за проект mylib. То есть Я хочу определить, что вам нужно скопировать jar и dll третьей стороны в целевую папку и что java.library.path ссылается на них, чтобы быть частью проекта mylib (mylib pom знает, как это сделать используется в других проектах). Тем не менее, я хочу, чтобы эти знания (то есть копировать инструкции, независимо от того, как они точно выполняются в Maven) передавались транзитивно в любой другой проект, использующий mylib, например, X. Это как-то возможно?
[Мое хакерское решение на данный момент состояло бы в том, чтобы у меня была копия сторонних вещей в X, но даже тогда я не знаю, как скопировать / обработать файл dll, поэтому мне пришлось бы написать readme, сообщив, что Файл DLL должен быть скопирован в папку bin исполняющей ВМ).
Любые предложения приветствуются!