これが私のプロジェクトの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 ...
}
}