まず、この質問のタイトルが間違っていたらお詫びします。
目標: Maven を使用して、外部プロパティ ファイルを読み取る必要がある jar をパッケージ化しています。jar は、tomcat7 を使用してデプロイされる wars によって使用されます。tomcat では、以下に示すように、プロパティ ファイル (PROPERTY_MANAGER) の場所にある setenv.sh が、jar がプロパティを読み取る場所から設定されます。これどうやってするの?
私は Apache-tomcat-7.0.32 を使用しており、setenv.shは次のように読み取ります。
export JAVA_OPTS="-DPROPERTY_MANAGER=$CATALINA_HOME/myPropertiesDir -DCOMMON_PROPERTIES=$CATALINA_HOME/myCommonPropsDir -DAPP_ENCRYPTION_PASSWORD=pass $JAVA_OPTS"
Eclipse では、既存の Maven モジュールをインポートします。この時点での私のモジュールは単純な Java クラスです (したがって、Tomcat を介してプロパティがどのように読み取られるかをテストできます)。これが私のクラスです:
Class MyClass{
private String var1;
private String var2;
public MyClass(){}
public String getVar1() { return var1; }
public String getVar2() { return var2; }
public String setVar1(String a) { var1 = a; }
public String setVar2(String a) { var2 = b; }
public static void main (String []arg){
MyClass c = new MyClass();
System.out.println(“var1 = “ + c.getVar1() +”, var2 = “+c.getVar2());
}
}// end of class
src/main/resources の下にあるmyprops.xmlファイルは次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=http://www.springframework.org/schema/beans
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xmlns:si=http://www.springframework.org/schema/integration
xmlns:jms=http://www.springframework.org/schema/integration/jms
xmlns:context=http://www.springframework.org/schema/context
xmlns:util=http://www.springframework.org/schema/util
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.1.xsd">
<context:property-placeholder location="file:${PROPERTY_MANAGER}/myclass-props.properties" ignore-unresolvable="true"/>
<!-- MyClass bean -->
<bean id="mybean" class="my.com.test.MyClass">
<property name="var1" value="${prop.var1}" />
<property name="var2" value="${prop.var2}" />
</bean>
</beans>
myclass-propsは $CATALINA_HOME/myCommonPropsDir の下にあり、次のようになります。
prop.var1=abc
prop.var2=123
上記のクラスは、maven モジュールとしてビルドされ、jar としてパッケージ化されています。これをテストするために、Tomcat を起動し、Eclipse でメイン クラスを Java アプリケーションとして実行し、それをリモート Java アプリケーションとしてデバッグしてみました。リモートは何もしません。Java アプリとして実行すると、次のような出力が得られます: var1 = null, var2 = null;
明らかに、プロパティ ファイルは取得されませんでした。ここで何が間違っていますか?私が見逃している小さなものだと確信しています。事前にすべての提案をありがとう。