我正在尝试使用maven插件openjpa-maven-plugin
来增强来自另一个Jar的Entity类,不幸的是我没有找到正确的方法来执行它。
我在jar MyPojo
打包的模块MyDomain
中有一个类my-domain.jar
:
public class MyPojo {
private Long id;
...
}
在我的第二个项目MyJpa
打包my-jpa.jar
中,它取决于模块my-domain.jar
,Maven配置为使用Build Time OpenJPA Enhancer,具体如下:
<plugin>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa-maven-plugin</artifactId>
<configuration>
<includes>**/entity/*.class</includes>
<addDefaultConstructor>true</addDefaultConstructor>
<enforcePropertyRestrictions>true</enforcePropertyRestrictions>
</configuration>
<executions>
<execution>
<id>enhancer</id>
<phase>process-classes</phase>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa</artifactId>
<version>2.3.0</version>
</dependency>
</dependencies>
</plugin>
我正在使用orm.xml
中声明的XML映射persistence.xml
:
...
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<mapping-file>META-INF/orm.xml</mapping-file>
...
和orm.xml看起来像:
<entity class="MyPojo" access="FIELD">
<table name="MYPOJO"/>
<attributes>
<id name="id">
<generated-value strategy="AUTO"/>
</id>
</attributes>
</entity>
运行mvn install
会出现以下错误:
此配置不允许运行时优化,但在构建时或使用javaagent在类加载时未增强以下列出的类型:
当我将班级MyPojo
移动到项目MyJpa
(而不是项目MyDomain)时,它可以正常工作。
所以我的问题是:我需要配置什么才能在构建时增强来自外部Jar的类MyPojo
?
答案 0 :(得分:4)
我需要配置什么才能在构建时增强来自外部Jar的MyPojo类?
如果我正确理解你的问题,你就无法在构建时增强一个生活在jar内部的类。如果你想以这种方式增强,你需要解开课程,增强,然后重新开始。