2013-10-24 2 views
1

В контексте java существует ли какая-либо принципиальная разница между «плагином» и «внешней библиотекой jar/сторонней библиотеки/внешней зависимостью и т. Д.?Разница между плагином и внешним файлом jar

. Следствие в вопросе: когда вы загружаете и устанавливаете плагин в eclipse, делает ли он что-нибудь еще, кроме копии jar в каталоге .plugin?

ответ

1

Плагин Eclipse должен содержать ряд записей в MANIFEST.MF, которые будут распознаваться как плагин. Они дают имя и версию плагина, а также списки других плагинов, которые требуются, и множество других значений.

Плагин может также содержать plugin.xml, который определяет точки расширения Eclipse, которые использует плагин, а также может объявлять новые точки расширения.

Плагины Eclipse не обязательно должны быть jar-файлами, эквивалентная структура каталогов также приемлема.

Когда Eclipse устанавливает плагин, он получает информацию от MANIFEST.MF и plugin.xml для обновления внутренних таблиц таких вещей, как вкладыши точек добавок, пути классов для каждого плагина и т. Д.

Пример plugin.xml который объявляет новую точку расширения и использует существующий:

<?xml version="1.0" encoding="UTF-8"?> 
<?eclipse version="3.4"?> 
<plugin> 
    <extension-point id="editor" name="%extension-point.name" schema="schema/editor.exsd"/> 
    <extension 
     id="coreFragment" 
     point="org.eclipse.e4.workbench.model"> 
     <fragment 
      uri="fragment.e4xmi"> 
     </fragment> 
    </extension> 
</plugin> 

Пример MANIFEST.MF

Manifest-Version: 1.0 
Export-Package: greg.music.core.common,greg.music.core.e4util,greg.mus 
ic.core.editor,greg.music.core.preferences,greg.music.core.progress,g 
reg.music.core.services,greg.music.core.showin,greg.music.core.util,g 
reg.music.core.views,greg.music.core.xml 
Service-Component: OSGI-INF/playerStateService.xml,OSGI-INF/preference 
Settings.xml,OSGI-INF/extensionFactory.xml 
Bundle-ActivationPolicy: lazy 
Bundle-Name: %Bundle-Name 
Bundle-RequiredExecutionEnvironment: JavaSE-1.7 
Require-Bundle: org.eclipse.core.runtime,greg.music.forms;bundle-versi 
on="1.0.0",greg.music.parts;bundle-version="1.0.0",greg.music.annotat 
ions;bundle-version="1.0.0",javazoom.jlgui.basicplayer;bundle-version 
="1.6.0",org.eclipse.jface;bundle-version="3.8.101",org.eclipse.e4.co 
re.contexts;bundle-version="1.1.0",org.eclipse.e4.core.commands;bundl 
e-version="0.10.1",org.eclipse.e4.core.di;bundle-version="1.1.0",org. 
eclipse.e4.core.services;bundle-version="1.0.0",org.eclipse.e4.ui.mod 
el.workbench;bundle-version="0.10.1",org.eclipse.e4.ui.workbench;bund 
le-version="0.11.0",org.eclipse.e4.ui.services;bundle-version="0.10.3 
",com.ibm.icu;bundle-version="4.4.2",org.eclipse.emf.common;bundle-ve 
rsion="2.9.0",org.eclipse.emf.ecore;bundle-version="2.9.0",org.eclips 
e.e4.ui.css.swt.theme;bundle-version="0.9.100",org.eclipse.e4.ui.di;b 
undle-version="1.0.0",org.joda.time;bundle-version="2.3.0",com.google 
.guava;bundle-version="14.0.1" 
Bundle-Vendor: %Bundle-Vendor 
Bundle-Version: 1.0.0.201310241930 
Bundle-ManifestVersion: 2 
Bundle-Activator: greg.music.core.Activator 
Import-Package: javax.annotation;version="1.0.0",javax.inject;version= 
"1.0.0" 
Bundle-SymbolicName: greg.music.core;singleton:=true 
+0

Так что, если я хочу, чтобы написать плагин Eclipse, я должен был бы предоставить manifest.mf? или есть инструмент для создания manifest.mf, если я предоставляю некоторые конкретные параметры? – Victor

+0

В Eclipse есть пункт меню Project/Project/Plug-in Project, который будет генерировать основной плагин, включая manifest.mf. Существует редактор манифеста и plugin.xml, который упрощает управление содержимым. –

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