在我的jpa应用程序中,我想切换每个配置文件的ddl架构生成。为了启用模式生成,我需要额外的行:
<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
<property name="javax.persistence.schema-generation.scripts.action" value="drop-and-create"/>
<property name="javax.persistence.schema-generation.scripts.create-target" value="sampleCreate.ddl"/>
<property name="javax.persistence.schema-generation.scripts.drop-target" value="sampleDrop.ddl"/>
如果禁用了架构生成,则此行不应存在或禁用。将${some.prop}
添加到xml中以通过maven过滤它会引发persistence.xml(ide)中的错误。因为我想立即切换所有这些行,如果要设置onlz一个属性就没关系。
那么如何实现呢?
答案 0 :(得分:1)
每个个人资料你应该设置这样的属性
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
...
<dependencies>
...
</dependencies>
<profiles>
<profile>
<id>enableSchemaGeneration</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<schema.generation>
<![CDATA[
<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
<property name="javax.persistence.schema-generation.scripts.action" value="drop-and-create"/>
<property name="javax.persistence.schema-generation.scripts.create-target" value="sampleCreate.ddl"/>
<property name="javax.persistence.schema-generation.scripts.drop-target" value="sampleDrop.ddl"/>
]]>
</schema.generation>
</properties>
</profile>
<profile>
<id>disableSchemaGeneration</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<schema.generation></schema.generation>
</properties>
</profile>
</profiles>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
现在你可以像它一样构建它
mvn clean install -PenableSchemaGeneration
它会改变
${schema.generation}
中的persistence.xml中的
<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
<property name="javax.persistence.schema-generation.scripts.action" value="drop-and-create"/>
<property name="javax.persistence.schema-generation.scripts.create-target" value="sampleCreate.ddl"/>
<property name="javax.persistence.schema-generation.scripts.drop-target" value="sampleDrop.ddl"/>