我有一个maven项目,并使用nativedependencies-maven-plugin
(https://github.com/fmarot/nativedependencies-maven)来管理DLL。
DLL来自第三方,具有以下结构。让我们说JAR文件的名称是abc.jar
,相应的DLL是abcxyz.dll
,其中xyz是没有句点的版本号。因此,如果版本是12.6.1,则DLL名为abc1261.dll
。如果第三方将其产品更新为12.7.0版,则会发出新的JAR abc.jar
和新的DLL abc1270.dll
。
我将JAR存储在本地存储库中,然后存储库中反映的JAR名称为abc-x.y.z.jar
。我在名为natives-abc
的DLL上放置了一个分类器,并且存储库中的DLL名称(一旦部署)为abc-x.y.z-natives-abc.dll
。当我构建项目时,abc-x.y.z-natives-abc.dll
被target/natives
正确地复制到nativedependencies-maven-plugin
文件夹。
当我从Eclipse运行项目时,它失败了,因为JAR正在寻找abcxyz.dll
而不是abc-x.y.z-natives-abc.dll
。如果我将abc-x.y.z-natives-abc.dll
复制到abcxyz.dll
文件夹中的target/natives
,那么一切正常,我知道java.library.path
设置正确,我也通过检查使用jinfo
工具进行处理。
我需要的是将DLL从本地存储库复制到target/natives
后重命名。我无法弄清楚如何让maven这样做。
我想要做的是在本地存储库中使用不同版本的abc.jar
和abcxyz.dll
,然后只需更改<version>
文件中的pom.xml
标记即可引用到不同的版本。部署中的JAR文件的名称并不相关,但它的相关DLL名称是相关的,因为来自第三方的特定版本的JAR文件会查找与该版本对应的特定DLL名称。 / p>
答案 0 :(得分:1)
此处nativedependencies-maven-plugin
的维护者。
我不确定我完全理解,但我认为我有一个解决方案:
如果您要在您的仓库(本地或非本地)部署/安装由您的3 rd 方提供的.jar(而不是.dll),那么当Maven将获得此依赖并解压缩时(与nativedependency-maven-plugin
),它将保持其内部.dll
的名称不变。因此,您的代码(或第三方代码)将在运行时正确找到它。
如果您自己的代码加载了DLL,我建议将DLL重命名为唯一的名称,而不使用该版本来简化该过程。希望它有所帮助。
答案 1 :(得分:0)
以上建议有效。我要做的是创建一个df.rolling(window='1d').corr()
df.rolling(window=1).corr()
包含zip
,(称之为abcxyz.dll
),使用abcxyz.dll.zip
打包将其添加到maven存储库,然后在zip
指的是那个。
换句话说,这是具有依赖关系的pom.xml
部分:
pom.xml
我刚刚使用WinZip创建了Zip。
<dependency>
<groupId>com.thegroup</groupId>
<artifactId>abc</artifactId>
<version>12.6.1</version>
<type>zip</type>
<classifier>natives-abc</classifier>
</dependency>