Durante o desenvolvimento, eu uso um ambiente (bando de dados) de teste. Na minha classe conexão eu aponto para um IP específico.
Ao liberar um jar, eu tenho que alterar o IP, rodar o Ant e alterar o IP novamente para (apontar para o desenvolvimento outra vez). O risco de esquecer da alteração do IP é grande.
O Ant não pode fazer isto por mim, ou seja , antes de gerar o jar, ele altera meu fonte e o compila ?
Tenho uma classe com o endereço ip do banco que é distribuida em um jar para vários usuários ( sistemas desktop - Swing ) . Toda vez que atualizo algumas destas classes, eu gero o jar novamente e o coloco em um disco da rede para que ele seja colocado no jre/lib/ext de cada usuário. Durante o desenvolvimento, eu aponto para outro banco (de testes )
Há como resolver isto de uma forma melhor ? Um arquivo properties ? Teria que colocar este arquivo em cada máquina ?
Uma coisa que você pode fazer é usar System.getProperty e passar um parâmetro -D no seu ambiente de desenvolvimento. No de produção, onde é mais difícil de passar parâmetros, você pode simplesmente omitir o tal parâmetro.
java -Dambiente=desenvolvimento MinhaClasse
e na sua classe você pode ter algo como:
if (System.getProperty("ambiente") == null) {
stringConexao = "blablabla"; // produção
} else {
stringConexao = "blebleble"; // desenvolvimento
}
Se bem que para tais coisas, é melhor usar JNDI, ou arquivos de configuração .properties, etc.
Um .properties é fácil de usar (ponha o arquivo no seu .jar, use algo como
InputStream is = getClass().getResourceAsStream("/arquivo.properties");
Properties prop = new Properties();
prop.load (is);
is.close();