2010-11-23 8 views
1

私は現在、プロパティファイルのバージョン番号をハードコードしており、RCP製品ファイルからバージョン番号をプログラムで直接取得できるようにしたいと考えています。この方法では、私は2つの場所でバージョン番号を指定する必要はありません。私はそうすることについての記事を見つけることができません。私はEclipse RCP 3.xを使用しています。Eclipse RCP:製品ファイルからバージョン番号をプログラムで取得するにはどうすればよいですか?

これは実行可能ですか?

ありがとうございました。

+0

これはビルド時のものですか?製品ファイルの外部にバージョン番号を指定し、ビルド時に製品ファイルのプレースホルダを置き換えることを検討しましたか? –

+0

@Andy、それをどのように構成すればよいのか分かりますか?それは、バージョン番号のプロパティファイルから読み取ることができ、製品ファイルにprefillするのがいいだろう。ありがとう。 – limc

答えて

0

次の操作を実行できます。バージョン番号が必要な場合は、ビルド番号(たとえば$ DEVLEOPER $)で置き換えられるタグをplugin.xmlに追加します。あなたのbuild.propertiesファイルで

、ファイルがカスタマイズした設定を行いますビルドコールバックが含まれていますcustomBuildCallbacksタグで指定します。

customBuildCallbacks = buildCustomization.xml 

ファイルbuildCustomization.xmlは以下が含まれます:

<?xml version="1.0"?> 

<project name="product_customization" default="[email protected]"> 
    <target name="[email protected]" if="buildtag" description="Patch buildtag (if it exists) into plugin.xml"> 
     <replace file="plugin.xml" token="$DEVELOPER$" value="${buildtag}" /> 
    </target> 
</project> 

これは、ファイルplugin.xmlの$ DEVELOPER $トークンを "buildtag"プロパティの内容で置き換えます。

これはすべてあなたがPDEで構築していることを前提としていますが、一般的な考え方も他の方法にも当てはまります。 SomeClassが1である

import org.osgi.framework.FrameworkUtil; 
import org.osgi.framework.Version; 

Version v = FrameworkUtil.getBundle(SomeClass.class).getVersion(); 
String version = String.format("Version %d.%d.%d", v.getMajor(), v.getMinor(), v.getMicro()); 

:このような

+0

-1元のポスターは、プラグインファイルのバージョン番号ではなく、RCP製品ファイルからIDを取得することを指定しました。 – ianmayo

0

ない私は完全にあなたの問題を理解しておくが、あなたはプログラム的にあなたのOSGiバンドル(すなわち、「プラグインバージョン」)のバージョンを取得することができます(どのようなプロパティファイルを?)あなたのクラスのプラグインで。

1

製品ファイルのバージョン番号は製品ファイルのバージョンです。

  1. String version = Display.getAppVersion().toString();
  2. String version = Platform.getProduct().getDefiningBundle().getVersion().toString();
  3. String version = Platform.getProduct().getDefiningBundle().getHeaders().get("Bundle-Version");

またはあなたが追加することができます:あなたはplugin.xmlの中にバージョンを設定する必要があり、製品のバージョンを取得したい場合は、以下のバリアントを試すことができますプロパティ "バージョン"をorg.eclipse.core.runtime.products拡張子に変換して使用してください。System.out.println(Platform.getProduct().getProperty("version"));

+0

これらはいずれも製品バージョンを返しません。私にとって、2.と3.ブランディングプラグインのバージョンを返します。 – jastram