Передача 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>