我有以下情况:
我的库mylib是一个库(我有源代码,所以我想将它们放入Maven项目mylib:mylib中)。该库具有一个JAR依赖项,我只有该JAR文件,并且无法在Maven存储库中找到它(我也不想在那里安装它)。要使其编译,可以执行以下操作:将JAR文件添加到mylib项目中的“lib”文件夹中,例如“lib/thirdpartylib.jar”,并在mylib的pom.xml中添加一个依赖项,其中包括自选的组/工件/版本和一个“
请注意,mylib还具有对dll文件的运行时依赖关系,例如thirdparty.dll。但是,这对于编译不重要。
现在我想知道如何实现以下内容:
任何其他项目,例如项目“X”,使用mylib将需要
我的库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为目录(例如“。”),以便执行VM可以找到第三方jar和dll。
我的担忧是:我希望第三方jar / dll的事情成为mylib项目的责任。也就是说,我想定义需要将第三方jar和dll复制到目标文件夹中,并且java.library.path引用它们的知识,成为mylib项目的一部分(mylib pom知道在其他项目中如何使用该项)。然而,我希望这种知识(即复制说明,无论在Maven中如何实际完成)被传递到使用mylib的任何其他项目中,例如X。是否可能做到这一点?
【我目前的hack解决方案是,在X中有第三方内容的副本,但即使如此,我也不知道如何复制/处理dll文件,因此我必须编写自述文件,说明必须将dll文件复制到执行VM的bin文件夹中。)
如果您有任何建议,请告诉我!