2013-03-04 42 views
16

Tôi có một phụ thuộc Maven yêu cầu một DLL khi chạy. Những gì tôi muốn làm là chỉ đơn giản là có dll trong resources/lib thư mục và đặt DLL của nó vào thư mục target. Vì vậy, what've tôi thực hiện là:maven-surefire-plugin, DLL và java.library.path

  1. Added DLL để src/main/resources/lib
  2. Modified pom.xml sử dụng lập luận -Djava.library.path = $ {basedir}/lib như vậy:

    <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> 
    

Tuy nhiên tôi vẫn gặp phải lỗi thời gian chạy mà DLL không có trong java.library.path.

+0

Câu trả lời của tôi không giải quyết được câu hỏi của bạn? – carlspring

+0

Không thực sự: (Tôi nhớ tôi đã sử dụng một giải pháp khác (vì vậy tôi đã không thực sự sử dụng plugin này). Tôi hiểu rằng bạn muốn tôi chấp nhận câu trả lời của bạn, nhưng tôi không thực sự nhớ. Đề nghị? – Xorty

+0

Ồ, không ... đừng hiểu lầm tôi, chỉ là mọi người cứ bỏ phiếu ngay bây giờ và sau đó tôi quay lại kiểm tra nó, đó là một câu hỏi chưa được giải quyết và tôi tự hỏi nó không hoạt động như thế nào, (vì đây là một trong những trường hợp đặc biệt trong góc trường hợp) ...? – carlspring

Trả lời

15

<argLine/> trỏ tới đường dẫn không đúng. Hãy thử thay vào đó:

<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> 

Nếu DLL này chỉ được sử dụng để kiểm tra, bạn nên đặt nó dưới src/test/resources. Trong trường hợp đó, đường dẫn <argLine/> sẽ thay đổi thành ${project.build.directory}/test-classes.

+2

Unfortunatelly không có ích gì khi tôi kiểm tra giá trị của đường dẫn như "System.getProperty (" java.library.path ");" Tôi vẫn không thể thấy mong muốn DLL.Bất cứ ý tưởng nào hơn? – Xorty

+0

Hãy thử chuyển vào thuộc tính dưới dạng '' như được hiển thị ở đây: http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html #systemPropertyVariables – carlspring

+0

Kiểm tra ở đây để biết thêm chi tiết và đảm bảo bạn đang sử dụng phiên bản mới hơn 2.8. http://jira.codehaus.org/browse/SUREFIRE-634 – carlspring

Các vấn đề liên quan