2012-01-06 39 views
9

Làm cách nào để nhận phiên bản Maven của dự án của tôi theo chương trình?Lập trình phiên bản Maven của dự án của bạn

Nói cách khác:

static public String getVersion() 
{ 
    ...what goes here?... 
} 

Ví dụ, nếu dự án của tôi sẽ tạo ra jar CalculatorApp-1.2.3.jar, tôi muốn quay trở lại getVersion()1.2.3.

+1

Ý của bạn là trong plugin hoặc trong chính ứng dụng? –

+0

Bạn định làm gì với phiên bản maven? Nếu nhu cầu là thích bao gồm các thông tin trong một số tập tin trong quá trình buil thì bạn có thể sử dụng [build-helper-maven-plugin] (http://mojo.codehaus.org/build-helper-maven-plugin/maven -version-mojo.html) sẽ cung cấp cho bạn phiên bản maven. – CoolBeans

+0

Tôi có thể đã hiểu sai câu hỏi của bạn. Nếu bạn muốn nhận được phiên bản của dự án của bạn (không phải là phiên bản của maven như bình luận trước đó của tôi) sau đó hãy xem [ở đây] (http://blog.nigelsim.org/2011/08/31/programmatically-getting-the -maven-phiên bản-của-dự án của bạn /). – CoolBeans

Trả lời

16

Tạo tập tin version.prop trong src/main/resources với các nội dung sau:

version=${project.version} 

Thêm dòng sau vào pom của dự án của bạn:

<build> 
... 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
      <includes> 
       <include>**/version.prop</include> 
      </includes> 
     </resource> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>false</filtering> 
      <excludes> 
       <exclude>**/version.prop</exclude> 
      </excludes> 
     </resource> 
    </resources> 
... 
</build> 

Thêm phương pháp sau:

public String getVersion() 
{ 
    String path = "/version.prop"; 
    InputStream stream = getClass().class.getResourceAsStream(path); 
    if (stream == null) 
     return "UNKNOWN"; 
    Properties props = new Properties(); 
    try { 
     props.load(stream); 
     stream.close(); 
     return (String) props.get("version"); 
    } catch (IOException e) { 
     return "UNKNOWN"; 
    } 
} 

tái bút: Tìm thấy hầu hết giải pháp này tại đây: http://blog.nigelsim.org/2011/08/31/programmatically-getting-the-maven-version-of-your-project/#comment-124

+0

Tại sao định nghĩa tài nguyên thứ 2 có lọc được đặt thành false? – demaniak

+0

@demaniak các bản sao đầu tiên chỉ là version.properties và lọc nó, các bản sao thứ hai everthing nhưng version.properties và không lọc. – pauli

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