10

我正在尝试使用 maven 插件增强来自另一个 Jar 的 Entity 类openjpa-maven-plugin,不幸的是我没有找到正确的方法来做到这一点。

我在 jar 中打包了一个MyPojo模块类:MyDomainmy-domain.jar

public class MyPojo {

private Long id;

...

}

在我的第二个项目MyJpa打包my-jpa.jar中,它依赖于 module 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)时,它可以工作。

所以我的问题是:我需要配置什么才能在构建时增强MyPojo来​​自外部 Jar 的类?

4

1 回答 1

4

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

如果我正确理解了您的问题,您将无法在构建时增强存在于 jar 中的类。如果你想以这种方式增强,你需要解压缩类,增强,然后重新压缩。

于 2015-08-31T15:14:56.650 回答