2011-04-25 58 views
20

Tôi cần có Maven chèn số phiên bản từ tệp POM vào tệp kê khai có trong tệp WAR trong /WEB-INF/manifest.mf.Làm thế nào để đưa phiên bản dự án maven vào tệp kê khai chiến dịch?

Làm cách nào để thực hiện việc này? Tôi đã có thể dễ dàng nộp tài liệu để làm điều này trong một tệp JAR bằng cách sử dụng maven-jar-plugin, nhưng điều đó không hoạt động trên một tệp WAR.

Cảm ơn sự giúp đỡ!

Trả lời

29

Đã tìm ra bằng cách sử dụng plugin maven-war. Xem cấu hình dưới đây:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.1.1</version> 
    <configuration> 
     <archive> 
      <manifestEntries> 
       <version>${project.version}</version> 
      </manifestEntries> 
     </archive> 
    </configuration> 
</plugin> 
+0

Nếu bạn quan tâm đến việc đọc thông tin phiên bản như vậy thông qua URL web quá, ví dụ tại 'http: // example.com/versioninfo.txt' bạn có thể lọc một mẫu' versioninfo.txt', có chứa '$ {project của bạn .version} 'và [bao gồm tệp phiên bản vào chiến tranh] (http://www.taringamberini.com/en/howto/java/2015/including-release-info-into-war/) bằng cách sử dụng' maven -war-plugin'. – taringamberini

-1

Đặt ${project.version} vào tệp kê khai.mf nơi bạn muốn phiên bản. Để làm việc này, tôi tin rằng bạn cần plugin tài nguyên để manven sẽ 'lọc' tài nguyên khi chúng được đưa vào tệp chiến tranh của bạn.

+0

Nhưng file manifest không phải là một nguồn tài nguyên. Nó được tạo ra tại thời gian xây dựng, đúng không? Nếu nó được tạo ra tại thời gian xây dựng, sau đó nó sẽ không được xử lý như một tài nguyên. Tôi có hiểu lầm gì không? –

+0

@ Điều này có thể là một nguồn tài nguyên, nhưng đó là một cách tiếp cận không chính xác. Bạn nói đúng, tệp được tạo bởi trình cắm maven-war-on. Câu trả lời của bạn dưới đây là chính xác. – yegor256

17

Hoặc bạn có thể sử dụng addDefaultImplementationEntries hoặc addDefaultSpecificationEntries cờ mà sẽ bổ sung thêm một số mục trong đó có project.version tài sản.

addDefaultImplementationEntries

Implementation-Title: ${project.name} 
Implementation-Version: ${project.version} 
Implementation-Vendor-Id: ${project.groupId} 
Implementation-Vendor: ${project.organization.name} 
Implementation-URL: ${project.url} 

addDefaultSpecificationEntries

Specification-Title: ${project.name} 
Specification-Version: ${project.version} 
Specification-Vendor: ${project.organization.name} 

Giá trị mặc định cho cả hai là sai. Nếu thuộc tính không được xác định (ví dụ: project.organization.name), thì dòng đó sẽ bị loại trừ khỏi tệp kê khai.

Điều này có thể đi vào maven-chiến-plugin cấu hình như sau:

<plugin> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.2</version> 
    <configuration> 
     <archive> 
      <manifest> 
       <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 
      </manifest> 
     </archive> 
    </configuration> 
</plugin> 
Các vấn đề liên quan