[RESOLVIDO] Selecionar persistence.xml correto usando Maven

1 resposta
felipe_gdr

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

1 Resposta

felipe_gdr

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!

Criado 1 de março de 2013
Ultima resposta 4 de mar. de 2013
Respostas 1
Participantes 1