2010-04-05 27 views
15

Khi tôi chạy "mvn deploy: deploy", maven triển khai 4 tệp jar vào kho lưu trữ từ xa bên trong của tôi.Làm cách nào để loại trừ các nguồn jar trong triển khai mvn?

Đó là:

[module-name] -1.jar
[module-name] -1.pom
[module-name] -1-sources.jar
[module-tên ] -1-tests.jar

Thực tế có nhiều tệp hơn, chẳng hạn như tệp md5 và sha1, đang được triển khai. Nhưng để đơn giản, tôi chỉ bỏ qua những tập tin này ở đây.

Có cách nào để loại trừ [tên mô-đun] -1-sources.jar khỏi quá trình triển khai không?

Một cách mà tôi có thể nghĩ là sử dụng "mvn deploy: deploy-file", cho phép tôi xác định cái bình nào cần triển khai. Nhưng vì tôi có vài tá mô-đun để triển khai, sẽ tốt hơn nếu tôi có thể cấu hình loại trừ tệp triển khai trong tệp pom.xml. Nếu không, tôi sẽ phải viết một kịch bản để triển khai.

Cảm ơn,
Richard

+0

Câu hỏi gần FYI không triển khai "-tests.jar" se [tại đây] (http://stackoverflow.com/questions/8246136/maven-deploy-not-to-upload-test-jar) – boly38

Trả lời

2

Triển khai Plugin maven trang web:

http://maven.apache.org/plugins/maven-deploy-plugin/index.html

Dựa trên những gì tôi đọc ở đó, có vẻ như bạn có thể loại trừ các module từ triển khai, nhưng không phải những file riêng biệt - ít nhất là chưa.

Nếu bạn nhìn vào các trang mục tiêu:

http://maven.apache.org/plugins/maven-deploy-plugin/plugin-info.html

nó không hiển thị bất kỳ cấu hình cụ thể của các plugin cho những gì bạn đang tìm kiếm. Khi trang mục tiêu được tạo từ lớp plugin, bằng cách xem các chú thích, tôi sẽ nói rằng chúng không có khả năng. Một điều bạn có thể làm là tạo một bản xây dựng khác không tạo ra các lọ bạn không muốn tạo ra - tức là tạo một gói lắp ráp khác hoặc các gói tương tự cho bản dựng đó và xây dựng sẽ chạy khi bạn đang cố triển khai các gói cụ thể.


Chỉnh sửa: koppernickus có mô tả đầy đủ về điều này, tôi khuyên bạn nên xem bài đăng của mình.

1

Maven mvn deploy:deploy triển khai tất cả các tạo tác được sản xuất trong quá trình maven (vòng đời mặc định). Để không triển khai [module-name]-1-sources.jar, bạn nên chỉ đơn giản là (?) Không sản xuất. Nếu bạn đang sử dụng maven-source-plugin để đính kèm tệp nguồn, không sử dụng nữa.

Nếu đây không phải là trường hợp bạn đang gặp vui lòng cung cấp thêm chi tiết: (? Mà cắm tạo ra hiện tượng này)

  1. làm thế nào để bạn tạo ra [module-name]-1-sources.jar vật
  2. tại sao bạn cần phải tạo ra nguồn nhưng bạn không cần triển khai chúng vào kho lưu trữ?
+0

@koppernickus chúng tôi giữ các nguồn trong repo phát hành chứ không phải repo snapshot. Điều này thực sự có thể là một thực tế phổ biến trong các ngành công nghiệp nơi các phiên bản sản phẩm cần được kiểm toán bởi các thực thể bên ngoài. – sal

+1

@sal Hãy xem xét sử dụng mvn-release-plugin (http://maven.apache.org/plugins/maven-release-plugin/) cho bất kỳ hiện vật nào được phát hành vào kho lưu trữ không snapshot. Quá trình này trông giống như sau: 1. cho ảnh chụp nhanh (giả định rằng đây là trường hợp thường xuyên nhất): chỉ cần làm "mvn clean install" -> loại bỏ nguồn như tạo tác đính kèm. 2. để phát hành (giả sử điều này hiếm khi được sử dụng): thực thi bản phát hành mvn: chuẩn bị và sau đó mvn: thực hiện Dù sao - nếu bạn cần một quá trình hơi khác ("nặng") cho bản phát hành hơn ảnh chụp nhanh tại leat, hãy thử plugin này. Trong trường hợp của chúng tôi nó hoạt động rất tốt. – kopper

+0

Đây là câu trả lời cho câu hỏi 2. Chúng tôi sử dụng hồ sơ triển khai với plugin phát hành tự động hóa quy trình. Và vâng, nó nặng. Nhưng quá trình kiểm toán là _much_ nặng hơn. – sal

5

Có cách nào để loại trừ [module-name] -1-sources.jar từ quá trình triển khai?

Không tạo nguồn nếu bạn không muốn triển khai chúng. Vì vậy, hoặc xóa các mục sau (mà bạn phải có trong POM của bạn) hoặc đặt nó trong một cấu hình mà bạn không sử dụng hoặc loại trừ trong quá trình phát hành (Tôi tự hỏi khi bạn sử dụng các nguồn trong trường hợp đó):

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-source-plugin</artifactId> 
     <executions> 
     <execution> 
      <goals> 
      <goal>jar</goal> 
      </goals> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build> 
+0

Đúng vậy. Tôi có thể loại bỏ các plugin nguồn maven từ pom.xml mẹ. Tuy nhiên, tôi muốn thực hiện việc này. Tôi muốn giữ các plugin nguồn maven trong POM cha mẹ. Nhưng cung cấp một hồ sơ để vô hiệu hóa các plugin nguồn. Điều này sẽ là lý tưởng, nhưng không chắc chắn nếu nó có thể thực hiện được. Tôi sẽ thử. – Richard

+0

@Richard Tôi không nghĩ rằng bạn có thể "vô hiệu hóa" một plugin trong tiểu sử, do đó bạn sẽ phải thực hiện theo cách khác: đặt khai báo 'maven-source-plugin' trong tiểu sử (được kích hoạt theo mặc định) và xóa hồ sơ trong khi phát hành: 'mvn -P! my-profile deploy' –

+0

Giải pháp khắc phục sự cố tốt Pascal. – TacB0sS

12

Như phiên bản 2.2 của maven-source-plugin bạn có thể bỏ qua thế hệ nguồn với một tùy chọn cấu hình mà không cần phải đặt plugin trong một hồ sơ trong pom cha mẹ của bạn:

<!-- Do not generate a source jar --> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-source-plugin</artifactId> 
    <version>2.2.1</version> 
    <configuration> 
     <skipSource>true</skipSource> 
    </configuration> 
    </plugin> 
4

Hãy để tôi cho rằng bạn shoudn't bỏ qua các nguồn tạo ra cho một module . Trong trường hợp đó, đây sẽ là một giải pháp đơn giản giúp bạn xử lý tình huống này:

Trong phần thực hiện "maven-source-plugin" dưới plugins phần, thiết lập các đính kèm gán cho sai . Cấu hình này sẽ tạo ra tệp sources.jar cho mô-đun của bạn, nhưng không gắn nó vào danh sách tạo tác của dự án.

Đoạn ví dụ là ở đây:

<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-source-plugin</artifactId> 
     <version>${source.plugin.version}</version> 
     <executions> 
      <execution> 
       <id>module1-sources</id> 
       <phase>verify</phase> 
       <goals> 
        <goal>jar-no-fork</goal> 
       </goals> 
       <configuration> 
        <!-- The below specified attribute 'attach' will disable the sources.jar not included in the artifact list --> 
        <attach>false</attach> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 
</plugins> 
4

Nếu bạn không muốn sửa đổi POM, bạn có thể bỏ qua các nguồn tạo jar bằng cách thêm -Dsource.skip vào dòng lệnh mvn.

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