2009-10-12 30 views
8

Làm thế nào để loại bỏ các tạo phẩm xây dựng được tạo ra khỏi thư mục đích của Maven? Maven tạo ra một tập tin jar hoặc chiến tranh để nhắm mục tiêu thư mục. Tôi muốn xóa tệp đó sau khi maven đã cài đặt tệp jar/war vào kho lưu trữ cục bộ (nghĩa là, sau khi maven đã thực thi mục tiêu 'install'). Việc xóa có thể xảy ra ở mục tiêu cài đặt hoặc mục tiêu riêng mà tôi thực hiện theo cách thủ công.Làm thế nào để loại bỏ các tạo phẩm xây dựng được tạo ra khỏi thư mục đích của Maven?

Lưu ý rằng tôi muốn giữ nguyên các phần khác của thư mục đích, ví dụ như target/site và target/surefire-reports.

+1

Ngoài sự tò mò, lý do đằng sau điều này là gì? –

+0

Tôi đã thấy điều này được thực hiện trước khi ai đó muốn tạo một tạo phẩm như tệp exe NSIS nhưng đang sử dụng loại tạo tác jar vì nó có bộ kết nối vòng đời thuận tiện hoặc nếu họ không quan tâm đến tạo phẩm trung gian (Ví dụ: file jar mà từ đó exe được tạo ra.) –

+0

Về cơ bản tôi đang chạy maven build bên trong một máy chủ tích hợp liên tục, và tôi chỉ quan tâm đến các báo cáo và các thứ được cài đặt cho repo cục bộ. Phần còn lại của các tập tin chỉ là lãng phí không gian và các tập tin jar của tôi xảy ra là khá lớn. –

Trả lời

18

Chỉ cần sử dụng các plugin sạch và chạy một thực hiện sau giai đoạn cài đặt:

<plugin> 
    <artifactId>maven-clean-plugin</artifactId> 
    <version>2.2</version> 
    <executions> 
     <execution> 
     <id>auto-clean</id> 
     <phase>install</phase> 
     <goals> 
      <goal>clean</goal> 
     </goals> 
     <configuration> 
      <filesets> 
      <fileset> 
       <directory>${project.build.outputDirectory}</directory> 
       <includes> 
       <include>**/*.jar</include> 
       </includes> 
      </fileset> 
      </filesets> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 
+0

+1 cho bộ lọc, nhưng phần tử thư mục phải là $ {project.build.outputDirectory} để cho phép các giá trị bị ghi đè –

+5

Tôi chỉ cần xóa một thư mục cụ thể khỏi kết quả. Kể từ phiên bản 2.3, plugin xóa toàn bộ thư mục theo mặc định trừ khi bạn chỉ định thuộc tính excludeDefaultDirectories trong thẻ . – Danny

0

Không có gì được tích hợp vào Maven có thể thực hiện việc này. Bạn có thể sử dụng plugin antrun để thực thi tập lệnh Ant sau khi cài đặt xóa tệp phần mềm đó hoặc sử dụng plugin exec để sử dụng dòng lệnh để xóa tạo phẩm hoặc viết trình cắm của riêng bạn.

Tôi đề nghị có ít giá trị, nếu có, khi thực hiện bất kỳ điều nào trong số này. Maven được thiết kế để đặt các tạo phẩm trung gian và cuối cùng trong target để tạo các bản dựng tiếp theo hiệu quả hơn. Lý do mà không có gì để làm điều này đã là một chỉ báo rằng điều này có giá trị rất ít. Nếu nó có giá trị đối với bạn, bạn có một vài lựa chọn.

+1

Vâng, điều đó không đúng. Xem câu trả lời của domi. Nói vậy, tôi vẫn thắc mắc tại sao một người lại làm thế. –

0

Tôi biết tôi là một chút muộn. Nhưng tôi đoán vấn đề là, rằng một dự án maven lưu trữ tự động các đồ tạo tác. Trong trường hợp của tôi, tôi đã tắt tính năng lưu trữ tự động và chỉ lưu trữ các tạo phẩm theo cách thủ công bằng cách sử dụng các tác vụ tạo bài đăng. Bằng cách này, chỉ những hiện vật mà tôi quan tâm được lưu trữ. Tôi sẵn sàng để lại các tạo phẩm được tạo ra trên đĩa cho đến khi bản xây dựng tiếp theo chạy.

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