Как улучшить класс из отдельного jar во время сборки с openJPA?
Я пытаюсь улучшить класс Entity из другого Jar-файла с помощью плагина maven. openjpa-maven-plugin
и, к сожалению, я не нашел правильный способ сделать это.
У меня один класс 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>
и я использую отображение XML orm.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?
1 ответ
Что мне нужно настроить, чтобы иметь возможность улучшить во время сборки класс MyPojo, поступающий из внешнего Jar-файла?
Если я правильно понимаю ваш вопрос, вы не сможете улучшить класс, который живет внутри банки во время сборки. Если вы хотите улучшить таким образом, вам нужно разархивировать класс, улучшить, а затем повторить.