Olá pessoal!
Tenho um aplicativo web que deve rodar em diferentes bancos de dados (oracle, mssql, mysql, etc.), cada desenvolvedor da equipe usa um banco diferente e portanto tem um datasource diferente dentro dos diretório do JBoss.
O problema é que não temos como configurar o persistence.xml de uma maneira que ele rode em todos os bancos, pois os parâmetros mudam (ex.: o dialect).
Eu estava querendo criar diferentes persistence.xml, um para cada banco (oracle-persistence.xml, mssql-persistence.xml, mysql-persistence.xml) e associar esses arquivos a diferentes perfis do maven (perfil-oracle, perfil-mssql, perfil-mysql). Aí cada desenvolvedor ativaria o perfil do banco que quisesse.
Não sei muito bem se isso é possível, ou se existe algum solução mais inteligente.
Alguma sugestão?
Abs
Consegui resolver essa questão. O que fiz foi o seguinte:
- criei vários persistence.xml dentro de uma pasta separada (persistences-xml/mysql-persistence.xml; persistences-xml/mssql-2008-persistence.xml; etc…)
- criei um perfil do maven para cada tipo de banco (perfil-mysql, perfil-mssql-2008, etc…)
- os perfis tem uma propriedade chamada banco.dados, cada perfil atribui o valor correspondente a essa propriedade (ex.: <banco.dados>mysql</banco.dados>)
- usei o plugin ant do maven para copiar o arquivo de persistência correspondente ao perfil ativo para a pasta META-INF, alterando o nome do arquivo para persistence.xml
seguem partes dos códigos :
perfis:
<profiles>
<profile>
<id>mysql</id>
<properties>
<banco.dados>mysql</banco.dados>
</properties>
</profile>
<profile>
<id>mssql-2008</id>
<properties>
<banco.dados>mssql-2008</banco.dados>
</properties>
</profile>
</profiles>
task do ant:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>validate</phase>
<configuration>
<target>
<echo>${banco.dados}</echo>
<copy overwrite="true" file="persistences-xml/${banco.dados}-persistence.xml" tofile="src/main/resources/META-INF/persistence.xml"/>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
Abs!