, , . :
- persistence.xml .
- EclipseLink Weaver, Weavers -persistenceunit Gradle.
- entitiy , persistence.xml.
1: persistence.xml
-, placeholder @datasourceName @ . build.gradle:
import org.apache.tools.ant.filters.ReplaceTokens
ext {
dsName = 'MyDataSourceName'
puName = 'MyPuName'
}
processResources {
filter(ReplaceTokens, tokens: [
datasourceName: dsName,
persistenceUnitName: puName
])
}
() src/main/resources/META-INF/persistence.xml:
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="@datasourceName@" transaction-type="JTA">
<jta-data source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=@datasourceName@)</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.weaving" value="static" />
</properties>
</persistence-unit>
, exclude-unlisted-classes false, EclipseLink Weaver . , " eclipselink.weaving " " static ", , . OSGi, EclipseLink , .
processResources /resources/main/META-INF/persistence.xml ( ):
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="MyPuName" transaction-type="JTA">
<jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=MyDataSourceName)</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.weaving" value="static" />
</properties>
</persistence-unit>
2. persistence.xml
, compileJava. , Weavers ( https://bugs.eclipse.org/bugs/show_bug.cgi?id=295031). build.gradle:
task copyResourcesToClassesOutputDir(type: Copy, dependsOn: processResources) {
from processResources.destinationDir
into compileJava.destinationDir
}
3:
, . build.gradle. , EclipseLink .
configurations {
providedApi
}
dependencies {
providedApi 'org.eclipse.persistence:org.eclipse.persistence.jpa:2.7.2'
providedApi 'org.eclipse.persistence:javax.persistence:2.2.0'
}
task performJPAWeaving(type: JavaExec) {
main "org.eclipse.persistence.tools.weaving.jpa.StaticWeave"
args "-loglevel",
"FINE",
compileJava.destinationDir.absolutePath,
compileJava.destinationDir.absolutePath
classpath (configurations.compile, configurations.providedApi)
dependsOn compileJava
dependsOn copyResourcesToClassesOutputDir
}
tasks.withType(Jar) {
dependsOn "performJPAWeaving"
}
! Jar, , Jar.