Como adiciono arquivos de configuração ou quaisquer outros recursos ao meu jar usando o Gradle?
Estrutura do meu projeto:
src / main / java / com / perseus / .. --- Pacotes Java (arquivos de origem)
src / main / java / config / *. xml --- Arquivos de configuração do Spring
Estrutura esperada do jar:
com / perseus / .. --- pacotes Java (arquivos de classe)
config / *. xml --- Arquivos de configuração do Spring
gradle
build.gradle
Pritesh Mhatre
fonte
fonte
Mova os arquivos de configuração de
src/main/java
parasrc/main/resources
.fonte
Obrigado pessoal, estava migrando um projeto existente para o Gradle e não gostei muito da ideia de mudar a estrutura do projeto.
Eu descobri, pensei que esta informação poderia ser útil para iniciantes.
Aqui está um exemplo de tarefa do meu 'build.gradle':
fonte
sourceSets.main.resources { srcDirs = ["src/main/java"]; exclude "**/*.java" }
.Por padrão, todos os arquivos adicionados
src/main/resources
serão incluídos no jar.Se você precisar alterar esse comportamento por qualquer motivo, poderá fazer isso configurando
sourceSets
.Esta parte da documentação contém todos os detalhes
fonte
.../resources/
está incluído em vez do diretório de recursos com o conteúdo?Eu tive o mesmo problema. Eu tinha um arquivo PNG em um pacote Java e ele não foi exportado no JAR final junto com as fontes, o que fez o aplicativo travar ao iniciar (arquivo não encontrado).
Nenhuma das respostas acima resolveu meu problema, mas encontrei a solução nos fóruns do Gradle. Eu adicionei o seguinte ao meu
build.gradle
arquivo:Diz ao Gradle para procurar recursos no
src
pasta e pede que inclua apenas arquivos PNG.EDIT: Cuidado que se você estiver usando o Eclipse, isso irá interromper suas configurações de execução e você receberá um
main class not found
erro ao tentar executar seu programa. Para corrigir isso, a única solução que encontrei é mover a (s) imagem (ns) para outro diretório,res/
por exemplo, e defini-la como emsrcDirs
vez desrc/
.fonte
+=
operador para adicionar meus diretórios aos diretórios existentes: por exemplo,sourceSets.main.resources.srcDirs += [ "src/main/java" ]
Esteja ciente de que o caminho sob src / main / resources deve corresponder ao caminho do pacote de seus arquivos .class que desejam acessar o recurso. Veja minha resposta aqui .
fonte