2015-10-01 21 views
5

Tôi đang cố gắng tạo tệp jar có tất cả các lớp cần thiết được trích xuất trong bình. Nhưng đối với vài lọ phụ thuộc như log4j, nó tạo ra một số thư mục bên trong META-INF/maven/*. Tôi có một giới hạn rằng máy chủ mà tôi sẽ đặt tệp jar được tạo sẽ không có kết nối Internet. Vì vậy, nếu có bất kỳ nội dung nào trong thư mục META-INF/maven/* này thì nó sẽ cho tôi một lỗi.Loại trừ thư mục META-INF/maven khỏi tệp jar đã tạo

mô tả maven của tôi trông giống như sau

<build> 
    <sourceDirectory>src</sourceDirectory> 
    <plugins> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.3</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <configuration> 
       <archive> 
        <addMavenDescriptor>false</addMavenDescriptor> 
       </archive> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-shade-plugin</artifactId> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>shade</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <minimizeJar>true</minimizeJar> 
       <finalName>myclient</finalName> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

tôi có thể trích xuất các tập tin lớp học yêu cầu trong jar tạo nhưng thư mục maven vẫn bị tạo ra dưới META-INF. Tôi phải tự xóa thư mục để làm mọi thứ hoạt động. Vui lòng tư vấn về cách tự động loại bỏ thư mục maven này khỏi tệp jar đã tạo.

Trả lời

11

Bạn có thể sử dụng filters bên trong cấu hình maven-shade-plugin để loại trừ tất cả những gì là dưới META-INF/maven cho mọi đồ tạo tác:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-shade-plugin</artifactId> 
    <version>2.4.1</version> 
    <executions> 
     <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>shade</goal> 
      </goals> 
      <configuration> 
       <filters> 
        <filter> 
         <artifact>*:*</artifact> 
         <excludes> 
          <exclude>META-INF/maven/**</exclude> 
         </excludes> 
        </filter> 
       </filters> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

Một giải pháp cho maven-jar-plugin thể được tìm thấy here.

+0

Tuyệt vời yêu bạn đời :) –

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