2013-03-04 138 views
16

我有一個Maven依賴項,需要運行時的DLL。我想要做的僅僅是在resources/lib文件夾中有該DLL,並將其DLL放到target目錄中。所以搞什麼名堂我所做的是:maven-surefire-plugin,dll和java.library.path

  1. 添加DLL文件src/main/resources/lib
  2. 修改pom.xml使用參數-Djava.library.path = $ {BASEDIR}/lib目錄像這樣:

    <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <configuration> 
         <forkMode>once</forkMode> 
         <workingDirectory>target</workingDirectory> 
         <argLine>-Djava.library.path=${basedir}/lib</argLine> 
        </configuration> 
    </plugin> 
    

但是我仍然得到運行時錯誤,DLL不存在java.library.path

+0

我的回答沒有解決您的問題嗎? – carlspring 2015-10-23 16:56:10

+0

不是真的:(我記得我使用了一種不同的解決方案(所以我沒有真正使用這個插件)。我明白你希望我接受你的答案,但我不記得。建議? – Xorty 2015-10-28 10:57:23

+0

哦,不......不要誤會我的意思,只是人們時刻保持投票,然後我再回來檢查一下,這是一個未解決的問題,所以我想知道它不工作的方式,(因爲這是那些特殊的情況下情況之一)...? – carlspring 2015-10-28 12:25:23

回答

15

您的<argLine/>指向不正確的路徑。試試這個:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <configuration> 
     <forkMode>once</forkMode> 
     <workingDirectory>target</workingDirectory> 
     <argLine>-Djava.library.path=${basedir}/src/main/resources/lib</argLine> 
    </configuration> 
</plugin> 

如果這個DLL將只用於測試,你應該把它src/test/resources下。在這種情況下,<argLine/>路徑將更改爲${project.build.directory}/test-classes

+2

不幸的是,沒有幫助。當我檢查像「System.getProperty(」java.library.path「)路徑的值;」我仍然看不到 – Xorty 2013-03-04 13:08:57

+0

嘗試在屬性中傳遞如下所示: http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html #systemPropertyVariables – carlspring 2013-03-04 16:09:20

+0

請點擊此處查看更多詳細信息,並確保您使用的版本比2.8更新。 http://jira.codehaus.org/browse/SUREFIRE-634 – carlspring 2013-03-04 16:39:57