Как читать файл внешних свойств в Maven

127

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

<properties file="x.properties"> 

</properties>

Было некоторое обсуждение этого: Внешние свойства Maven

Dougnukem
источник
Если у вас всего несколько значений и разные пользователи будут нуждаться в разных значениях, рассмотрите возможность размещения значения в вашемsettings.xml .
Raedwald

Ответы:

95

Попробуйте плагин Properties Maven

Майк Поун
источник
1
Я думаю, что это то, что я ищу. Я не смог найти 1.0-SNAPSHOT в репозиториях maven, но есть выпуск: mvnrepository.com/artifact/org.codehaus.mojo/… <dependency> <groupId> org.codehaus .mojo </groupId> <artifactId> properties-maven-plugin </artifactId> <version> 1.0-alpha-1 </version> </dependency>
Dougnukem
3
Текущая ссылка: mojo.codehaus.org/properties-maven-plugin/…
Джесси Глик
Текущая версия: <groupId> org.codehaus.mojo </groupId> <artifactId> properties-maven-plugin </artifactId> <version> 1.0-alpha-2-SNAPSHOT </version> из snapshots.repository.codehaus.org
Huluvu424242
2
Ссылка в ответе была обновлена ​​до новой ссылки от @JesseGlick
Джон Адамс,
1
У меня были проблемы с этим плагином в Windows. Если у кого-то тоже есть проблемы, попробуйте куали .
пн
56

Используя предложенный плагин свойств Maven, я смог прочитать файл buildNumber.properties, который я использую для создания версий своих сборок.

  <build>    
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>properties-maven-plugin</artifactId>
        <version>1.0-alpha-1</version>
        <executions>
          <execution>
            <phase>initialize</phase>
            <goals>
              <goal>read-project-properties</goal>
            </goals>
            <configuration>
              <files>
                <file>${basedir}/../project-parent/buildNumber.properties</file>
              </files>
            </configuration>
          </execution>
        </executions>
      </plugin>
   </plugins>
Dougnukem
источник
9
не могли бы вы показать внутреннюю часть файла buildNumber.properties? Спасибо!
Victorio
Спасибо за рабочий пример. Однако почему я получил ошибкуPlugin execution not covered by lifecycle configuration: org.codehaus.mojo:properties-maven-plugin:1.0-alpha-1:read-project-properties (execution: default, phase: initialize)
WesternGun
Когда я вхожу в этот раздел <plugin> в разделе <plugins> после </build> и перед обычными плагинами maven, я получаю Plugin 'execution' not covered by lifecycle configuration: org.codehaus.mojo:properties-maven-plugin:1.0-alpha-1:read-project-properties (execution: default, phase: initialize)
следующую
@BorisBrodski, не могли бы вы показать внутреннюю часть файла buildNumber.properties? Кажется, вы удалили некоторые детали.
Moustafa Mahmoud
@MoustafaMahmoud, почему я? Это не мой ответ :) Но я могу предположить, что это может выглядеть как my.great.product.version = 1.0.0.
Борис Бродский
5

Этот ответ на аналогичный вопрос описывает, как расширить плагин свойств, чтобы он мог использовать удаленный дескриптор для файла свойств. Дескриптор - это в основном артефакт jar, содержащий файл свойств (файл свойств включен в src / main / resources).

Дескриптор добавляется как зависимость к плагину расширенных свойств, поэтому он находится в пути к классам плагина. Плагин будет искать в пути к классам файл свойств, считывать содержимое файла в экземпляр свойств и применять эти свойства к конфигурации проекта, чтобы их можно было использовать в другом месте.

Богатый продавец
источник