2012-01-06 4 views
9

Как получить программную версию Maven в программе?Программно получить версию Maven вашего проекта

Другими словами:

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

Например, если мой проект будет генерировать банку CalculatorApp-1.2.3.jar, я хочу getVersion()1.2.3 вернуться.

+1

Вы имеете в виду плагин или в самом приложении? –

+0

Что вы собираетесь делать с версией maven? Если необходимо, чтобы информация включалась в некоторый файл во время процесса buil, вы можете использовать [build-helper-maven-plugin] (http://mojo.codehaus.org/build-helper-maven-plugin/maven -version-mojo.html), который даст вам версию maven. – CoolBeans

+0

Возможно, я неверно истолковал ваш вопрос. Если вы хотите получить версию своего проекта (а не версию maven, как мой предыдущий комментарий), то загляните сюда (здесь) (http://blog.nigelsim.org/2011/08/31/programmatically-getting-the -maven-версия-оф-ваш-проект /). – CoolBeans

ответ

16

Создать файл version.prop в src/main/resources со следующим содержанием:

version=${project.version} 

Добавьте следующий П вашего проекта:

<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> 

Добавьте следующий метод:

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"; 
    } 
} 

P.S. Найденное большинство из этого решения здесь: http://blog.nigelsim.org/2011/08/31/programmatically-getting-the-maven-version-of-your-project/#comment-124

+0

Почему второе определение ресурса с фильтрацией установлено на false? – demaniak

+0

@demaniak первый экземпляр только version.properties и фильтрует его, второй экземпляр everthing, но version.properties и не фильтрует. – pauli

Смежные вопросы