これが私のプロジェクトのMaven構造です
アプリ >共通モジュール >webapp-モジュール >バッチモジュール pom.xml
はクラスcommon-module
を公開しVersion
ます。このクラスは、webappモジュールとバッチモジュールの両方で使用されます。
このVersion
クラスには、と呼ばれる1つの固有の静的メソッドがありget
ます。プロジェクトのグローバルバージョンを返します。
グローバルバージョンはプロパティファイルに保存されます。がget
バッチモジュール(スタンドアロンJavaアプリケーション)から呼び出されると、プロパティファイルが正常にロードされます。
Webアプリでは、状況が異なります。VersionBean
すべてのJSFページがメソッドを呼び出すことを許可するマネージドBeanを作成しましたget
。次のいずれかを使用するときはいつでも
FacesContext.getCurrentInstance().getExternalContext()
FacesContext.getCurrentInstance().getExternalContext().getContext()
Thread.currentThread().getClassLoader()
私はproperties.fileを見つけることができません。
管理対象Beanからjarファイルにあるプロパティファイル(getResourceAsStream)をロードするにはどうすればよいですか?
編集
@BalusCと@eljuniorからのアドバイスに基づいて私が思いついた解決策は次のとおりです
VersionBean.java
@ManagedBean(eager=true)
@ApplicationScoped
public class VersionBean {
private String version;
@PostConstruct
public void init(){
version = Version.get();
}
}
Version.java
public class Version {
public static String get() {
InputStream is = Version.class.getResourceAsStream("/version.properties");
// Read InputStream and return version string ...
}
}