Передача URL JDBC в openjpa-maven-plugin для обновления данных в PostgreSQL

В pom.xml У меня есть (взято с http://struberg.wordpress.com/2012/05/10/using-jpa-in-real-projects-part-1/):

<properties>
    <openjpa.sql.action>refresh</openjpa.sql.action>
    <database.driver.name>org.postgresql.Driver</database.driver.name>
    <database.connection.url>jdbc:postgresql://myURL</database.connection.url>
    <database.user>user</database.user>
    <database.password>password</database.password>
</properties>

<plugin>
    <groupId>org.apache.openjpa</groupId>
    <artifactId>openjpa-maven-plugin</artifactId>
    <version>${openjpa-version}</version>
    <configuration>
        <includes>**/entity/*.class</includes>
        <excludes>**/entity/Q*.class</excludes>
        <addDefaultConstructor>true</addDefaultConstructor>
        <enforcePropertyRestrictions>true</enforcePropertyRestrictions>
        <sqlAction>${openjpa.sql.action}</sqlAction>
        <connectionDriverName>${database.driver.name}</connectionDriverName>
            <connectionProperties>
                jdbcUrl=${database.connection.url},
                user=${database.user},
                password=${database.password},
            </connectionProperties>
        </configuration>
        <executions>
            <execution>
                <id>enhancer</id>
                <phase>process-classes</phase>
                <goals>
                    <goal>enhance</goal>
                    <goal>sql</goal>
                </goals>
            </execution>
        </executions>
        <dependencies>
            <dependency>
                <groupId>org.apache.openjpa</groupId>
                <artifactId>openjpa-all</artifactId>
                <version>${openjpa-version}</version>
            </dependency>
        </dependencies>
    </plugin>

По какой-то причине, URL не передается правильно, и я получаю

Расширитель выполнения цели org.apache.openjpa:openjpa-maven-plugin:2.2.0:sql fail: Не удалось получить соединение для класса драйвера "org.postgresql.Driver" и URL-адреса "null". Возможно, вы указали неверный URL. (Org.apache.openjpa: OpenJPA-Maven-плагин: 2.2.0: SQL: энхансер: процесс-классы)

Я пытался заменить jdbcUrl в connectionProperties с url, URL и т.д. Ничего не помогает. Тем не менее, я могу поставить URL в persistence.xml и это работает:

<property name="javax.persistence.jdbc.url"
    value="jdbc:postgresql://myURL" />

Драйвер, пользователь и пароль получены из свойств Maven. Однако, так как этот URL используется только для генерации DDL (источник данных создается другим способом во время выполнения), я бы предпочел, чтобы он был в pom.xml а также без загрязнения persistence.xml, Есть ли способ сделать это?

1 ответ

Решение

Я использовал commons-dbcp BasicDataSource для получения соединения вот так:

<connectionDriverName>org.apache.commons.dbcp.BasicDataSource</connectionDriverName>
<connectionProperties>
    driverClassName=${database.driver.name},
    url=${database.connection.url},
    username=${database.user},
    password=${database.password},
</connectionProperties>
Другие вопросы по тегам