|
|
|
поделитесь опытом: плагины
|
|||
|---|---|---|---|
|
#18+
коллеги поделитесь плз опытом. нужно оформить проект таким образом, чтоб можно было позже к нему подключать плагины (другими словами добавить дополнительную функциональность, например печать). Мне бы хотелось разобраться и понять каким образом строить проект чтоб эта возможность была реализованна. Еклипса в этом смысле хорошо организованна: кидаешь в папку jar-архив и при следующем старте он уже подключен и его можно видеть, например через меню. Как бы не ясно в какой форме должны эти плагины представлятся. Логично их оформлять в виде Bean-компонента, но как правильно это сделать? Посоветуйте плз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2006, 16:39 |
|
||
|
поделитесь опытом: плагины
|
|||
|---|---|---|---|
|
#18+
Посмотри на фреймворк OSGI - на нем Eclipse написан ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2006, 17:19 |
|
||
|
поделитесь опытом: плагины
|
|||
|---|---|---|---|
|
#18+
Можешь посмотреть фреймворк jpf - Java Plugin Framework ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2006, 17:55 |
|
||
|
поделитесь опытом: плагины
|
|||
|---|---|---|---|
|
#18+
ознакомился и поигрался с JPF. В принципе даже понравилось. Вот только дополнительно информации не могу найти. Может кто знает как из одного плагина достучатся до классов другого. Не знаю как это выполнить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2006, 11:53 |
|
||
|
поделитесь опытом: плагины
|
|||
|---|---|---|---|
|
#18+
Нужно в манифесте одного плагина вставить <requires> <import plugin-id="Другой плагин"/> </requires> И будешь иметь доступ к классам другого плагина А для компиляции добавь в build файл в classpath строчку <dirset dir="${plugins.home}" includes="другой плагин-*/classes"/> И все будет работать. Вообще в демке все достаточно хорошо описано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2006, 10:39 |
|
||
|
поделитесь опытом: плагины
|
|||
|---|---|---|---|
|
#18+
спасибо, потренируюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2006, 13:58 |
|
||
|
поделитесь опытом: плагины
|
|||
|---|---|---|---|
|
#18+
Я читал туториал JPF-Проекта. Там конечно же поясняется что означают теги Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Больше всего мне непонятно каким образом из одного плагина достигают классов другого исходя из предположения, что фактически каждый плагин - это абсолютно самостоятельная сущность и то, что на этапе компиляции какого-то плагина фактически не известно о существовании классов другого плагина. Смею предположить, что где-то должен быть общий знаменатель, вероятнее всего - это сам "материнский проект", который и запускает все плагины. Т.о. следует вывод, что все классы становятся видимыми только на этапе выполнения проекта. Вот тут то я и спотыкаюсь: мне как раз то и надо достучатся до классов другого плагина именно на этапе компиляции. Вероятно я совершил где-то логическую ошибку и немного "торможу". Буду очень благодарен за "отмычку". В примерах плагинов JPF-проекта я заметил существование файлов "build.xml", но к сожалению никакого описания в проекте этих файлов я не нашел, за исключением, пожалуй, момента где описывается подключение JPF-Demo к Netbean IDE. Вероятно это действительно файлы проекта NetBean. Я же работаю с эклипсой и поэтому предложение коллеги Kudinov Anton касательно строчки <dirset dir="${plugins.home}" includes="другой плагин-*/classes"/> не имеют реальной силы для меня. Я был бы искренне благодарен за фрагмент кода PS должен ли я проектировать плагин именно в рамках уже существующего материнского проекта или все-таки выполнять его как абсолютно самостоятельный прект? всетаки фрагмент кода мог бы прояснить ситуацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2006, 21:00 |
|
||
|
поделитесь опытом: плагины
|
|||
|---|---|---|---|
|
#18+
Я сам работаю в eclipse проекты jpf собираются ant'ом Есть главный build.xml файл и есть build.xml файлы для каждого плагина. Чтобы собрать проект нужно выполнить ant для главного build файла Чтобы работать с проектом нужно чтобы все исходники подключались в eclipse как папки исходников. Для того чтобы работать с классами другого плагина нужно чтобы он реализовывал интерфейс точки расширения плагина и можно его использовать Код: plaintext 1. 2. Вообще скачай себе demo и попробуй его установить и погонять чтобы разобраться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2006, 10:08 |
|
||
|
поделитесь опытом: плагины
|
|||
|---|---|---|---|
|
#18+
спасибо, поковыряюсь еще. демо я сразу скачал, но вероятно еще не все основытельно "проел". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2006, 16:51 |
|
||
|
поделитесь опытом: плагины
|
|||
|---|---|---|---|
|
#18+
Простите коллеги, что то я не "догоняю". Я работаю на eclipse. Проблема в теории, я не могу понять следующий момент. Допустим имеем некоторый плагин, назовем его "База данных"(id="connection"). Допустим он имеет следующий plugin.xml: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. делаю вывод, что библиотека "connection" предоставляет все свои "потроха" для использования в других плагинах. Далее я создаю другой плагин, назовем его "family".Из этого плагина я хочу обращаться к классам плагина "БазеДанных". Предположим он имеет такой plugin.xml: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Из него видно, что для работы этого плагина ("family") требуется два других плагина: Код: plaintext 1. 2. 3. family.Hello (<parameter id="class" value="family.Hello"/>), который действительно запускается материнским проектом (в терминах JPF - ApplicationPlugin) в качестве плагина. Вот теперь вопросы: 1. что(кто) и на каком этапе выполняет подключение необходимых плагинов Код: plaintext 1. 2. 3. (family.Hello), я должен иметь доступ к классам плагина "БазаДанных", после того, как сам плагин "family" загрузился. Это означает, что когда мой класс family.Hello существует, он может обращаться к классам "БазыДанных". Но вот как выражается это подключение, каким должен быть код? - не понимаю. Если я просто использую конструкцию в family.Hello: Код: plaintext "расширения"класс PluginManager (возвращаемый getManager()) уже не работоспособен. Т.о. вообще не ясно как достучатся до классов плагина "БазаДанных" и как функционирует механизм Код: plaintext то весь механизм, реализованный в конструкции Код: plaintext 1. 2. После долгих изучений, я обнаружил, что можно дотянутся до классов другого плагина только на этапе загрузки плагина, когда вызывается метод doStart() ( для этого мы указываем в объявлении плагина атрибут class: <plugin id="family" version="0.0.4" class="family.Hello">). Это выглядит таким образом (это фрагмент класса family.Hello из плагина family): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Код: plaintext 1. 2. Коллеги, научите плз, где сабака зарыта? Как все таки правильно дотягиваться до классов другого плагина. Играет ли ант здесь ключевую роль ? PS работаю на эклипсе. Предварительно изучил ANT,и понял, что ант предназначен для сборки проекта. Но эклипс сам это делает, мне бы запустить все под эклипсой. класс Hello: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2006, 14:11 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33774309&tid=2148961]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
179ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 480ms |

| 0 / 0 |
