2012-06-22 25 views
5

Tôi có một yêu cầu rất cụ thể về cơ sở hạ tầng xây dựng của chúng tôi để sao chép một số nội dung của một phụ thuộc JAR khác vào một thư mục con cụ thể của ứng dụng web của tôi. Chúng tôi đang sử dụng maven-assembly-plugin và cách tự nhiên để thực hiện việc này là sử dụng <dependencySet> cùng với <unpackOptions>.Maven Assembly - chỉ sao chép tập tin từ thư mục con khi trích xuất từ ​​kho lưu trữ

Mẫu mã (trong mô tả lắp ráp) Tôi có vẻ ngoài như sau:

<dependencySet> 
     <unpack>true</unpack> 
     <scope>runtime</scope> 
     <useProjectArtifact>false</useProjectArtifact> 
     <includes> 
      <include>my.group:artifact:jar</include> 
     </includes> 
     <unpackOptions> 
      <includes> 
       <include>subfolder/config.xml</include> 
      </includes> 
     </unpackOptions> 
     <outputDirectory>WEB-INF/otherfolder</outputDirectory> 
    </dependencySet> 

Vấn đề là tôi không thể tìm ra cách để xác định rằng tôi chỉ muốn sao chép chỉ là một tập tin duy nhất artifact.jar/subfolder/config.xml để mục tiêu WEB-INF/otherfolder. Kết quả thực tế là WEB-INF/otherfolder/subfolder/config.xml. Như bạn thấy, /subfolder được nối vào đường dẫn cuối cùng. Có cách nào để thay đổi biểu thức <include> sao cho /subfolder không được nối thêm?

Cảm ơn trước!

+0

Bạn đã cố gắng xóa thư mục con khác khỏi outputDirectory? – khmarbaise

+0

@khmarbaise Trong trường hợp đó, tôi sẽ nhận được WEB-INF/thư mục con/config.xml. Nhưng kết quả mong đợi là WEB-INF/otherfolder/config.xml –

+0

thử **/config.xml và xem điều gì xảy ra .. – om39a

Trả lời

2

Duyệt qua nguồn cho thấy rằng điều này là không thể thông qua trình cắm thêm maven-assembly. Nó được tất cả bao gồm được chỉ định trong mô tả lắp ráp, và sau đó chuyển thông tin này để Plexus archiver được sử dụng thông qua nhiều giai đoạn. Bao gồm các mẫu được chuyển đến Plexus archiver, và sau đó nó rõ ràng thực hiện 'giải nén' bảo tồn cấu trúc thư mục.

+0

Cảm ơn bạn đã phản hồi. – Puce

1

Bạn đã bao giờ nghĩ về maven-dependency-plugin có hỗ trợ tốt cho việc giải nén lưu trữ.

+0

Tôi đã nghĩ, và tôi sẽ suy nghĩ lại vì tôi sẽ dọn dẹp các kịch bản xây dựng. Nhưng, thành thật mà nói, đây không phải là câu trả lời cho một câu hỏi. –

0

Như @khmarbaise cho thấy, các giải pháp nằm trong việc kết hợp phụ thuộc-plugin với lắp ráp-plugin:

  • Vào giai đoạn gói bắt đầu được hé mở bởi sự phụ thuộc bạn cần một số thư mục đích
  • Mở gói (sau này trong pom) sử dụng lắp ráp để trích xuất các tệp cụ thể từ thư mục đó vào tạo tác của bạn
Các vấn đề liên quan