Em Java, onde na hierarquia da embalagem/fonte devem ser colocados recursos?
Pergunta
Digamos que desenvolvi um jogo e o coloquei na estrutura do pacote:
com.dxmio.games.breakout
Onde está o local da 'prática de recomendação' para colocar recursos como áudio e imagens que o jogo usa?
Solução
Eu vi isso tratado de várias maneiras diferentes:
- Coloque seus recursos diretamente em um subdiretório sob com/dmxio/games/breakout (por exemplo, /dmxio/games/breakout/images/foo.gif e /com/dmxio/games/breakout/images/bar.gif)
- Coloque seus recursos em uma jarra junto com os arquivos da classe (por exemplo, foo.gif e bar.gif agrupados em breakout.jar)
- Coloque seus recursos em um 'Jar de recursos' separados em um subdiretório sob com/dmxio/games/breakout (por exemplo, foo.gif e bar.gif incluído em /com/dmxio/games/breakout/images/images.jar)
Eu tendem a favorecer a última opção.
Você pode então usar o java.lang.class.getResource () Método para recuperar seus recursos.
Outras dicas
Você sempre pode adotar uma abordagem Maven padrão para o seu projeto e colocar todos os arquivos de origem do aplicativo em
{home}/src/main/java/com/dmxio/games/breakout
E então vocês recursos vivem em
{home}/src/main/recursos/com/dmxio/games/breakout
Seus testes vivem em:
{home}/src/test/java/com/dmxio/games/breakout
Essa estrutura é uma convenção padrão para estruturar projetos no mundo Maven. Isso traz muitas vantagens com ele, que você pode querer olhar. Você pode conferir a seção de recursos aqui:
http://maven.apache.org/guides/getting-started/index.html#how_do_i_add_resources_to_my_jar
Alternativamente :) A outra abordagem aqui está bem ...