簡體   English   中英

將maven與第三方的DLL一起使用並管理DLL的名稱

[英]Using maven with DLL from third party and managing the name of the DLL

我有一個maven項目,正在使用nativedependencies-maven-pluginhttps://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-xyzjar 我在名為natives-abc的DLL上放置了一個分類器,並且存儲庫中的DLL名稱(一旦部署)為abc-xyz-natives-abc.dll 當我構建項目時, abc-xyz-natives-abc.dll然后由nativedependencies-maven-plugin正確復制到target/natives文件夾中。

當我從Eclipse運行項目時,它失敗了,因為JAR正在尋找abcxyz.dll而不是abc-xyz-natives-abc.dll 如果我將abc-xyz-natives-abc.dll復制到target/natives文件夾中的abcxyz.dll ,則一切正常,因此我知道java.library.path的設置正確,並且通過檢查使用jinfo工具進行處理。

我需要的是將DLL從本地存儲庫復制到target/natives重命名。 我不知道如何使Maven做到這一點。

我想做的是在本地存儲庫中擁有不同版本的abc.jarabcxyz.dll ,然后只需更改pom.xml文件中的<version>標記即可引用不同的版本。 部署中的JAR文件的名稱無關緊要,但它與DLL的名稱相關,因為第三方針對特定版本的JAR文件會查找與該版本相對應的特定DLL名稱。

這里是nativedependencies-maven-plugin維護者。

我不知道我完全理解,但我想我有一個解決辦法:如果你部署/安裝在你回購(本地或不)通過你的第三方提供的.jar(不是.dll文件),然后當Maven將獲得此依賴關系並將其解壓縮(使用nativedependency-maven-plugin ),它將保持其內部.dll的名稱不變。 因此,您的代碼(或第三方代碼)將在運行時正確找到它。

如果您自己的代碼加載了DLL,則建議您將DLL重命名為唯一的名稱,而不使用該版本,以簡化過程。 希望能幫助到你。

以上建議行之有效。 我要做的是創建一個包含abcxyz.dllzip (稱為abcxyz.dll.zip ),使用zip打包將其添加到maven存儲庫,然后在pom.xml引用該依賴項。

換句話說,這是pom.xml中具有依賴項的部分:

<dependency>
    <groupId>com.thegroup</groupId>
    <artifactId>abc</artifactId>
    <version>12.6.1</version>
    <type>zip</type>
    <classifier>natives-abc</classifier>
</dependency>

我只是使用WinZip創建了Zip。

mvn deploy:deploy-file -Durl=file:///path-to-my-repo -Dfile=abc1261.dll.zip -DgroupId=com.thegroup -DartifactId=abc -Dpackaging=zip -Dversion=12.6.1 -Dclassifier=natives-abc

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM