1
在java的上下文中,插件和外部jar /第三方庫/外部依賴等概念上有什麼不同?插件和外部jar文件之間的區別
這個問題的必然結果是:在eclipse中,你下載並'安裝'一個插件,除了複製.plugin目錄下的jar嗎?
在java的上下文中,插件和外部jar /第三方庫/外部依賴等概念上有什麼不同?插件和外部jar文件之間的區別
這個問題的必然結果是:在eclipse中,你下載並'安裝'一個插件,除了複製.plugin目錄下的jar嗎?
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
所以,如果我希望寫一個Eclipse插件,我需要提供manifest.mf?或者如果我提供了一些特定的參數,是否有工具來生成manifest.mf? – Victor
在Eclipse中有一個New/Project/Plug-in Project菜單項,它將生成包含manifest.mf的基本插件。有一個清單和plugin.xml的編輯器,可以更輕鬆地管理內容。 –