Adicionar arquivo de propriedades no caminho de classe
Estou criando um aplicativo independente do Spring, baseado no Spring Boot. Eu quero que este aplicativo leia suas propriedades de um arquivo de propriedades que esteja fora do arquivo jar em um diretório separado. A estrutura do aplicativo criado se parece com isso
testApplication
├── test-1.0-SNAPSHOT.jar
├── lib
│ └── <dependencies are here>
└── conf
└── application.properties
Quero carregar o arquivo application.properties no caminho de classe, para poder ler no meu aplicativo. É possível? Porque quando executo meu arquivo jar como este (no Windows):
java -cp "./*;lib/*;conf/*" com.myapp.Test
Recebo a seguinte exceção:
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.myapp.Test]; nested exception is java.io.FileNotFoundException: class path resource [application.properties] cannot be opened because it does not exist
at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:180)
...
Caused by: java.io.FileNotFoundException: class path resource [application.properties] cannot be opened because it does not exist
at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:172)
Eu tento ler o arquivo do aplicativo por esta anotação de classe:
@PropertySource("classpath:application.properties")
A documentação Java não menciona que arquivos não jar podem ser carregados no caminho de classe, mas se esse application.properties estiver no arquivo jar test-1.0-SNAPSHOT.jar, poderá ser acessado dessa maneira.
É possível colocar um arquivo não jar externo no caminho de classe? Sei que não tenho necessariamente o arquivo no caminho de classe, posso acessá-lo de diferentes maneiras, mas ainda estou curioso para saber se é possível.