2015-02-17 17 views
6

Tôi thu thập tất cả các thư viện phụ thuộc trong một thư mục tách trên mvn package như sau:Làm cách nào để loại trừ phạm vi kiểm tra maven khỏi gói phần mềm?

<plugin> 
     <artifactId>maven-dependency-plugin</artifactId> 
     <version>${maven.copy.plugin}</version> 
     <executions> 
      <execution> 
       <id>copy-dependencies</id> 
       <phase>package</phase> 
       <goals> 
        <goal>copy-dependencies</goal> 
       </goals> 
       <configuration> 
        <outputDirectory>${project.build.directory}/lib/</outputDirectory> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 

Vấn đề: điều này cũng bao gồm <scope>test</scope> thư viện. Làm cách nào để loại trừ các thư viện này?

+0

Câu hỏi đầu tiên: Tại sao lại làm điều này? Mục đích của việc làm như thế này là gì? Tạo một EAR/WAR /? – khmarbaise

+1

Bạn đã đọc hướng dẫn chưa? http://maven.apache.org/plugins/maven-dependency-plugin/copy-dependencies-mojo.html#excludeScope –

+0

@khmarbaise mục tiêu của tôi là tạo một cái bình có thể chạy được mà không cần tất cả các thư viện được đóng gói bên trong, nhưng trong một thư mục riêng biệt bên trong dir thực hiện. Giảm kích thước tệp khi bản thân dự án được cập nhật, nhưng không có sự phụ thuộc nào thay đổi (phải sao chép dự án bình thường qua mạng). – membersound

Trả lời

14

Sử dụng một includeScope để chỉ bao gồm runtime scoped phụ thuộc:

<plugin> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <version>${maven.copy.plugin}</version> 
    <executions> 
     <execution> 
      <id>copy-dependencies</id> 
      <phase>package</phase> 
      <goals> 
       <goal>copy-dependencies</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${project.build.directory}/lib/</outputDirectory> 
       <includeScope>runtime</includeScope> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

Rõ ràng, <excludeScope>test</excludeScope> dường như không được hỗ trợ bởi vì phạm vi test bao gồm tất cả phụ thuộc (https://issues.apache.org/jira/browse/MDEP-85).

+0

Tôi đã thử nó, nhưng có lỗi sau: 'Không thể loại trừ phạm vi Kiểm tra, điều này sẽ loại trừ mọi thứ. -> [Help 1] ' – membersound

+0

Hm, tôi thấy điều này có thể là không thể: http://jira.codehaus.org/browse/MDEP-85 – membersound

+0

Phải, bạn có thể sử dụng giải pháp được đề cập trong phần nhận xét vấn đề: chủ yếu chỉ bao gồm phụ thuộc phạm vi thời gian chạy. – manouti

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