Xlint: предупреждения adviceDidNotMatch из-за аспекта j-maven-plugin в файле pom.xml

Ниже приведены предупреждения, которые я получаю:

Description Resource    Path    Location    Type
advice defined in org.springframework.mock.staticmock.AbstractMethodMockingControl has not been applied [Xlint:adviceDidNotMatch]

Location    Type
advice defined in org.springframework.mock.staticmock.AnnotationDrivenStaticEntityMockingControl has not been applied [Xlint:adviceDidNotMatch]

Location    Type
advice defined in org.springframework.orm.jpa.aspectj.JpaExceptionTranslatorAspect has not been applied [Xlint:adviceDidNotMatch]

Location    Type
advice defined in org.springframework.scheduling.aspectj.AbstractAsyncExecutionAspect has not been applied [Xlint:adviceDidNotMatch]

Я не могу найти решение, чтобы избавиться от этих предупреждений. Мой текущий файл pom проекта содержит следующую версию:

JDK version = 1.7
roo version = 1.3.1.RELEASE
spring version=3.2.18.RELEASE
aspectj version = 1.8.1
aspectj-maven-plugin version = 1.4

Решение 1. Попытка: я попытался обновить версию JDK = 1.8 и версию roo = 2.0.0.RELEASE, но все равно получил то же предупреждение.

Решение 2. Пробовал: я добавил тег <Xlint>adviceDidNotMatch=error,noGuardForLazyTjp=ignore</Xlint> внутри <configuration tag> в отношении аспекта j-maven-plugin. Это тоже не сработало.

Любые предложения по другим подходам к удалению этих предупреждений.


person Sweety Sparkles    schedule 27.02.2019    source источник


Ответы (1)


Поскольку вы показываете только пару предупреждений (не ошибок, так что расслабьтесь!), а не MCVE, то есть приложение + код аспекта + POM + любой другой конфигурации, я могу только догадываться о вашей реальной ситуации, но, возможно, рассматриваемый модуль Maven представляет собой библиотеку аспектов, которая будет использоваться в других модулях или приложениях посредством ткачества во время загрузки или плетения во время компиляции. В любом случае, в этом случае предупреждения были бы нормальными, потому что pointcut не может соответствовать, если нет соответствующего целевого кода при компиляции аспекта. Поэтому такие информационные предупреждения должны быть, я бы на вашем месте их не подавлял.

Альтернативный случай состоит в том, что в вашем модуле есть аспект и код приложения вместе, и вы фактически ожидаете, что каждый аспект будет совпадать. В этом случае предупреждение сообщает вам, что, вероятно, ваши точки не совпадают, потому что они так или иначе неверны. Тогда вам просто нужно их исправить.

Это общий ответ на ваш очень общий вопрос. Если бы вы обновили свой вопрос (отредактировав его) и уведомили меня, добавив MCVE, о котором я упоминал выше (пожалуйста, перейдите по ссылке, чтобы узнать, что я имею в виду), я также могу отредактировать этот ответ и сделать его более точным. Око за око - если вы дадите мне больше информации, я могу вернуть деньги в той же валюте.


Редактировать: Если подумать, мне интересно, почему вы вообще используете компилятор AspectJ, потому что вы, похоже, работаете со Spring. Наиболее распространенным сценарием для Spring является использование Spring AOP (которому не нужен какой-либо компилятор AspectJ, поскольку он основан на прокси-сервере). Конечно, вы также можете использовать полный AspectJ из Spring, тогда то, что я сказал выше, снова применимо. Но для этого мне действительно нужно больше информации.

person kriegaex    schedule 27.02.2019