2012-07-03 34 views

Trả lời

50

Bạn có thể tránh tạo nó bằng cách đặt createDependencyReducedPom thành sai.

ví dụ:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-shade-plugin</artifactId> 
    <version>${maven-shade-plugin.version}</version> 
    <configuration> 
     <createDependencyReducedPom>false</createDependencyReducedPom> 
    </configuration> 
    .... 
    .... 
</plugin> 

Xem more detail from apache

enter image description here

+11

Nếu bạn tắt, thì điều bạn xây dựng sẽ vẫn có tất cả các phụ thuộc được hợp nhất được liệt kê dưới dạng phụ thuộc. – bmargulies

7

Xem https://issues.apache.org/jira/browse/MSHADE-121 và cũng https://issues.apache.org/jira/browse/MSHADE-124.

Có một tùy chọn để di chuyển d-r-p đến nơi khác, nhưng bạn có thể không thích hậu quả.

Bạn đang sai về chiếc bình có nắp, nó luôn luôn kết thúc trong mục tiêu/trừ khi bạn di chuyển nó ở nơi khác.

+1

bạn có thể giải thích chúng ta nên làm gì với pom được tạo ra này? – Cristiano

+1

Không có gì. Thêm nó vào tập tin .gitignore của bạn hoặc thiết lập svn: ignore trên nó. Maven làm cho nó để nó có thể bao gồm nó trong jar bóng mờ. – bmargulies

+2

Ý của bạn là gì? Bạn có thể không thích hậu quả? Hậu quả tiêu cực là gì? – Gili

1

tài liệu trên http://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html là không chính xác khi nó nói:

createDependencyReducedPom boolean - Cờ liệu để tạo ra một POM đơn giản cho artifact bóng mờ. Nếu được đặt thành đúng, phụ thuộc đã được đưa vào JAR uber sẽ bị xóa khỏi phần của POM được tạo. POM bị giảm sẽ là có tên là dependency-reduce-pom.xml và được lưu trữ trong cùng một thư mục làm tạo phẩm được tô bóng. Trừ khi bạn cũng chỉ định dependencyReducedPomLocation, plugin sẽ tạo một tệp tạm thời có tên là dependency-reduce-pom.xml trong dự án dựa trên. Giá trị mặc định là: true.

phụ thuộc-giảm-pom.xml là không được lưu trữ trong thư mục tương tự như các vật bóng mờ (thư mục đích) ... nó là trong thực tế được tạo ra trong thư mục gốc, không nhắm mục tiêu

+4

họ viết (ngay cả trong câu trả lời bạn có thể thấy): "plugin sẽ tạo tệp tạm thời có tên là dependency-reduce-pom.xml trong dự án" – OhadR

19

Dựa trên bmargulies 'câu trả lời và nhận xét của anh ấy về Xv. 's câu trả lời, tôi quyết định cấu hình POM phụ thuộc giảm được sản lượng để target/, mà đã bị bỏ qua trong VCS của tôi.

Để làm điều đó, tôi chỉ cần thêm các yếu tố dependencyReducedPomLocation tới phần tử configuration của các plugin, ví dụ:

<configuration> 
    <dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml</dependencyReducedPomLocation> 
    (...) 
</configuration> 
+2

Bevare, từ tài liệu plugin "Nơi đặt phụ thuộc giảm Lưu ý: việc thiết lập một giá trị cho tham số này với một thư mục khác với $ {basedir} sẽ thay đổi giá trị của $ {basedir} cho tất cả các lần thực hiện sau khi thực hiện bóng râm.Điều này thường không phải là những gì bạn muốn. mở vấn đề với plugin này. " –

3

Bạn có thể sử dụng một phiên bản cũ của các plugin. Phiên bản 1.7 của plugin maven-shade-ghi vào/target.

Kể từ phiên bản 1.7.1, tệp pom.xml được giảm phụ thuộc được viết thành basedir. Xem số MSHADE-124 vì một số lý do tại sao nó được thực hiện và hậu quả là gì.Nếu bạn thử đặt dependencyReducedPomLocation, bạn có thể gặp sự cố khi tạo trang web - số phát hành MSHADE-145.

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