Java: Maven: получить информацию о pom.xml в файле свойств (ртутный хеш как версия) - PullRequest
1 голос
/ 15 марта 2012

Я столкнулся со следующей проблемой: я хочу интегрировать ртутный хеш в мой проект Java.Я хочу интегрировать его в имя генерируемого файла (пакета debian), а также иметь файл, подобный version.properties, где я могу получить доступ к mercurial хешу.

Я знаю, что их многоиз похожих вопросов, но я читаю их, и я почему-то не могу решить мою проблему.

Я использую buildnumber-maven-plugin для извлечения ртутного хэша.Затем я интегрирую его в версию.Пакет debian генерируется с помощью этого хэша, когда я запускаю mvn clean install. Пока это работает.

<version>project-${buildNumber}</version>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>buildnumber-maven-plugin</artifactId>
            <version>1.0</version>
            <executions>
                <execution>
                    <phase>validate</phase>
                    <goals>
                        <goal>create</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

Мне не хватает файла buildNumber.properties, который должен автоматически генерироваться плагином.Я не могу найти это нигде.Поэтому я решил написать свой собственный файл свойств.Я создал один в src/main/resources и добавил свойство в свой pom.xml.Вот фрагменты:

pom.xml

<properties>
    <merc.version>${buildNumber}</merc.version>
</properties>

version.properties

version=${buildNumber}
version2=${merc.version}

Я запускаю mvn clean install из cmdl.Но когда я открываю файл version.properties из командной строки с less, я вижу содержимое в виде открытого текста, как написано выше.Свойства не заменяются реальным контентом.Я вижу только version=${buildNumber} и т. Д.

Кроме того, файл "pom.properties", который должен генерировать maven, содержит очень старую версию, выпущенную месяц назад.Я не понимаю, что делать, чтобы обновить его.

Пожалуйста, если кто-нибудь может мне помочь, это было бы здорово :-) Спасибо!

1 Ответ

2 голосов
/ 15 марта 2012

Вы должны активировать фильтрацию для ресурсов , которую вы не хотите фильтровать, в этом случае это означает:

<build>
 <resources>
    <resource>
      <directory>src/main/resources/version/</directory>
      <filtering>true</filtering>
    </resource>
  </resources>
...
</build>

Если ваши файлы version.properties правильно расположены в каталоге src / main / resources / version /, они будут отфильтрованы в процессе сборки и будут скопированы в target / class / ..., где должны быть заменены заполнители.

...