Como ler um arquivo de propriedades externas no Maven

127

Alguém sabe como ler um arquivo x.properties no Maven. Eu sei que existem maneiras de usar a filtragem de recursos para ler um arquivo de propriedades e definir valores a partir disso, mas quero uma maneira no meu pom.xml como:

<properties file="x.properties"> 

</properties>

Houve alguma discussão sobre isso: Propriedades externas do Maven

Dougnukem
fonte
Se você tiver apenas alguns valores e usuários diferentes precisarão de valores diferentes, considere colocar o valor no seusettings.xml .
Raedwald

Respostas:

95

Experimente o plug-in Propriedades Maven

Mike Pone
fonte
1
Eu acho que é isso que estou procurando. Não consegui encontrar o 1.0-SNAPSHOT nos repositórios do maven, mas há um release: mvnrepository.com/artifact/org.codehaus.mojo/… <dependência> <groupId> org.codehaus .mojo </groupId> <artifactId> properties-maven-plugin </artifactId> <versão> 1.0-alpha-1 </version> </dependency>
Dougnukem 11/11/2009
Versão atual: <groupId> org.codehaus.mojo </groupId> <artifactId> properties-maven-plugin </artifactId> <versão> 1.0-alpha-2-SNAPSHOT </version> de snapshots.repository.codehaus.org
Huluvu424242
2
O link na resposta foi atualizado para o novo link de @JesseGlick
Jon Adams
1
Eu tive problemas com este plugin no Windows. Se alguém também tiver problemas, experimente o kuali .
fnst
56

Usando o plug-in de propriedades sugerido do Maven, eu pude ler um arquivo buildNumber.properties que eu uso para criar versões de minhas compilações.

  <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
fonte
9
você poderia mostrar o interior do arquivo buildNumber.properties? obrigado!
victorio
Obrigado por um exemplo de trabalho. No entanto, por que eu recebi um erro dePlugin execution not covered by lifecycle configuration: org.codehaus.mojo:properties-maven-plugin:1.0-alpha-1:read-project-properties (execution: default, phase: initialize)
WesternGun 5/05
Quando entro nesta seção <plugin> em <plugins> após </build> e antes dos plugins regulares do maven, estou recebendo este erro:Plugin 'execution' not covered by lifecycle configuration: org.codehaus.mojo:properties-maven-plugin:1.0-alpha-1:read-project-properties (execution: default, phase: initialize)
PraNuta 28/02/19
@BorisBrodski você poderia mostrar o interior do arquivo buildNumber.properties? Parece que você excluiu alguns detalhes.
Moustafa Mahmoud
@MoustafaMahmoud why me? Essa não é a minha resposta :) Mas posso especular que poderia parecer 'my.great.product.version = 1.0.0'.
Boris Brodski
5

Esta resposta a uma pergunta semelhante descreve como estender o plug-in de propriedades para que ele possa usar um descritor remoto para o arquivo de propriedades. O descritor é basicamente um artefato jar que contém um arquivo de propriedades (o arquivo de propriedades está incluído em src / main / resources).

O descritor é adicionado como uma dependência ao plug-in de propriedades estendidas para que ele fique no caminho de classe do plug-in. O plug-in pesquisará o caminho de classe para o arquivo de propriedades, lerá o conteúdo do arquivo em uma instância de Propriedades e aplicará essas propriedades à configuração do projeto para que possam ser usadas em outros lugares.

Vendedor rico
fonte