Почему при создании моего проекта 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>