切换jpa 2.1每个maven配置文件的模式生成

时间:2015-06-25 10:19:32

标签: maven jpa ddl persistence.xml

在我的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一个属性就没关系。 那么如何实现呢?

1 个答案:

答案 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"/>