2016-11-23 8 views
2

Я пытаюсь написать плагин для прослушивания событий для jira. Когда я иду по-старому (который последний Atlassian SDK 6.2.9 делает) и поставить эти 2 линииВесенний сканер, не обнаруживающий компонент

<component key="eventListener" class="jira.plugins.listeners.MyEventListener"/> 
<component-import key="eventPublisher" class="com.atlassian.event.api.EventPublisher"/> 

и попытаться упаковать плагин я получаю предупреждение о том, что I cannot use component/component-import statement inside plugin descriptor file when Atlassian plugin key is set. В последнем SDK используется Spring Scanner, который автоматически добавляется в файл pom.xml во время создания скелета, и в этой документации настоятельно рекомендуется. Поэтому я удалить эти две строки из Atlassian-plugin.xml файл и попробуйте заменить их с соответствующими аннотациями:

@Component 
public class MyEventListener{ 
    @Inject 
    public MyEventListener(@ComponentImport EventPublisher eventPublisher){ 
     eventPublisher.register(this); 
    } 

} 

я могу собрать и упаковать его таким образом, но когда я установить его на запущенный экземпляр Jira, в описании плагина сказано: This plugin has no modules. Я пробовал сменить @Component на @Named, addind @ExportAsService на класс, но безрезультатно. Кажется, весенний сканер не обнаруживает мой класс как компонент. Кто-нибудь смог преодолеть эту проблему? Я написал в сообщество atlassian, но до сих пор не получил никаких новостей.

+0

Я тоже недавно столкнулся с этим, но я до сих пор не понял, как получить модуль в списке, но я заметил, что мои '@ EventListener' на самом деле вызываются в любом случае. Вы пытались добавить некоторые записи в свои методы '@ EventListener' и/или конструктор? –

+0

Да, я добавил регистрацию, и я ничего не получил. –

ответ

0

Настройте плагин maven Spring Scanner для выполнения в подробном режиме и убедитесь, что ваш класс обрабатывается во время сборки с использованием шаблонов включения.

<plugin> 
     <groupId>com.atlassian.plugin</groupId> 
     <artifactId>atlassian-spring-scanner-maven-plugin</artifactId> 
     <executions> 
      <execution> 
       <goals> 
        <goal>atlassian-spring-scanner</goal> 
       </goals> 
       <phase>process-classes</phase> 
      </execution> 
     </executions> 
     <configuration> 
      <includeExclude>+your.package.goes.here.*</includeExclude> 
      <verbose>true</verbose> 
     </configuration> 
    </plugin> 

Если все в порядке, после сборки вашего компонент будет перечислен в файле целевых/классы/META-INF/плагин-компонента/компоненте

В случае @Component определяется в библиотечный модуль (как зависимость хостинг плагина), вы также можете генерировать метаданные компонента используя элемент конфигурации

  <scannedDependencies> 
       <dependency> 
        <groupId>your.library.group.id</groupId> 
        <artifactId>your-library</artifactId> 
       </dependency> 
      </scannedDependencies> 

Примечания: существует разница между пружинным сканером V1 и V2, убедитесь, что вы используете право версия. См. reference.

 Смежные вопросы

  • Нет связанных вопросов^_^