Почему при создании моего проекта Spring я не получаю предупреждения от ткачей?
Кажется, я получаю кучу таких предупреждений, когда создаю свой проект Spring. В проекте используется Compile Time Weaving и различные аннотации Spring, такие как Transactional, Autowired и Configurable.
У меня есть три вопроса: каковы они (какой эффект)? Должен ли я беспокоиться о них? и "Что я могу сделать, чтобы удалить их?"
ajc: this affected type is not exposed to the weaver: com.myapp.domain.UserEntity [Xlint:typeNotExposedToWeaver]
Позвольте мне знать, что вам нужно, чтобы помочь мне решить эту проблему. Я могу опубликовать соответствующие части файла POM, части файлов конфигурации Java Spring или что-то еще. Я не знаю, что требуется, поэтому дайте мне знать.
Я видел его на форуме Spring, но это место - город-призрак. Несколько человек задали этот вопрос, но ответов нет.
Я использую конфигурацию Java для Spring и CTW.
Ответы
Ответ 1
Каковы они (какой эффект)?
Он (ajc
) говорит, что нашел какой-то класс, который, по его мнению, должен быть или "тканым", но этого не может быть сделано/не было сделано.
Должен ли я беспокоиться о них?
Да. Это означало бы, что компиляция времени AspectJ не будет выполняться должным образом; т.е. аннотации некоторых классов не вступят в силу.
Что делать, чтобы удалить их?
Измените конфигурацию сборки так, чтобы ткач мог найти весь код, который нужно переплетать.
Я предполагаю, что ваше приложение включает в себя несколько модулей Maven. Если это так, то этот ответ имеет некоторые ссылки на соответствующие документы Eclipse/AspectJ и Maven: fooobar.com/questions/539908/.... Похоже, что плагин AspectJ Maven должен быть явно сказано, где искать вещи.
Ответ 2
У меня была аналогичная проблема. При ближайшем рассмотрении я понял, что предупреждения выполнялись только в фазе test-compile
, где aspectj не был достаточно умен, чтобы автоматически смотреть в основной исходный каталог java, а также в исходную директорию тестирования. Я решил это, разделив два гола на отдельные исполнения, с разными конфигурациями. Соответствующая часть POM приведена ниже:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.10</version>
<configuration>
<complianceLevel>1.8</complianceLevel>
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
<source>1.8</source>
<target>1.8</target>
</configuration>
<executions>
<execution>
<id>compile</id>
<goals>
<goal>compile</goal>
</goals>
</execution>
<!-- add explicit instructions for test compile or it can't weave main src classes -->
<execution>
<id>test-compile</id>
<configuration>
<goals>
<goal>test-compile</goal>
<sources>
<basedir>${project.basedir}</basedir>
<includes>
<include>src/main/java/**/*.java</include>
<include>src/test/java/**/*.java</include>
</includes>
</sources>
</goals>
</configuration>
</execution>
</executions>
</plugin>