Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 如何使用openJPA在构建时从单独的jar增强类?_Maven_Jpa_Openjpa_Openjpa Maven Plugin - Fatal编程技术网

Maven 如何使用openJPA在构建时从单独的jar增强类?

Maven 如何使用openJPA在构建时从单独的jar增强类?,maven,jpa,openjpa,openjpa-maven-plugin,Maven,Jpa,Openjpa,Openjpa Maven Plugin,我正在尝试使用maven pluginopenjpa maven plugin来增强来自另一个Jar的实体类,不幸的是,我没有找到正确的方法来实现 我有一个来自模块MyDomain的类MyPojo,打包在jarMyDomain.jar中: public class MyPojo { private Long id; ... } 在我的第二个项目MyJpapackagingMyJpa.jar,它取决于模块mydomain.jar,Maven被配置为使用构建时OpenJPA增强器,具有以下功

我正在尝试使用maven plugin
openjpa maven plugin
来增强来自另一个Jar的实体类,不幸的是,我没有找到正确的方法来实现

我有一个来自模块
MyDomain
的类
MyPojo
,打包在jar
MyDomain.jar中:

public class MyPojo {

private Long id;

...

}
在我的第二个项目
MyJpa
packaging
MyJpa.jar
,它取决于模块
mydomain.jar
,Maven被配置为使用构建时OpenJPA增强器,具有以下功能:

<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:

    <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
,我需要配置什么

为了能够在构建时增强来自外部Jar的类MyPojo,我需要配置什么


如果我正确理解了您的问题,您就无法在构建时增强jar内部的类。如果您想以这种方式增强,您需要取消类的限制,增强,然后重新jar。

是的。那么,有没有一种方法可以用maven的方式实现呢?我不知道,即使另一个JAR是在同一个maven构建中作为EAR文件中的模块构建的(并且是自己增强的),我也不知道?
    <entity class="MyPojo" access="FIELD">
    <table name="MYPOJO"/>
    <attributes>
        <id name="id">
            <generated-value strategy="AUTO"/>
        </id>
    </attributes>
    </entity>