0

私は春3にMavenマルチモジュールプロジェクトを開発しています。2つのプロジェクトがあります。プロジェクトAにjdbc.properties(データベースのユーザー名とパスワードが含まれています)というプロパティファイルが1つありますが、プロジェクトBにはjdbc.propertiesがありません。Projet bでプロジェクトaの一般的なコードを取得するために、プロジェクトbに依存関係としてプロジェクトaを含めました。私の質問は、Mavenを使用してプロジェクトbのspring-context.xmlファイルでプロジェクトAのjdbc.propertiesのプロパティをどのように使用できるかです。

application-context.xml(SNIPPET)

<property name="jdbcUrl" value="${jdbc.url}"/>
 <property name="user" value="${jdbc.username}"/>
 <property name="password" value="${jdbc.password}"/>

これが私のプロジェクトの構造です

**Projects**
 - Project A
src/main/java
  +src/main/resource
    -Database.properties
    Database file has following properties 
    jdbc.driverClassName=org.h2.Driver
    jdbc.url=jdbc:h2:tcp://localhost/~/tododb
    jdbc.username=sa
    jdbc.password=
    jpa.database=H2
    jpa.showSql=true
    pom.xml

 - Project b
  +src/main/java
  src/main/resource (don't want to have jdbc.properties file in this project)
  pom.xml (I have added Project as dependencies in Project B because 
  i am using some  common classes of project a in project b) 

両方のプロジェクトのPOMファイルは次のとおりです。両方のプロジェクトの POM構成

 - Project A (pom.xml)
  <parent>
    <groupId>com.ambientideas</groupId>
    <artifactId>sample08-multimodulejava-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <groupId>com.ambientideas1</groupId>
  <artifactId>sample-multimodulejava-module1</artifactId>
  <name>sample application 1</name>
  <packaging>jar</packaging> 
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

 - Project B (Pom.xml)
  <parent>
    <groupId>com.ambientideas</groupId>
    <artifactId>sample08-multimodulejava-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>sample-multimodulejava-module2</artifactId>
    <packaging>jar</packaging> 
<dependencies> (using Project a common classes in project b)
        <dependency>
            <groupId>com.ambientideas1</groupId>
            <artifactId>sample-multimodulejava-module1</artifactId>
            <version>${version}</version>
        </dependency>
</dependencies> 
</project>

これが私のプロジェクトのSpring構成の両方のjdbc-context.jdbcファイルです。 今春の構成

In Both Projects (Project a, Project b), i have two jdbc.content.xml files( Spring xml's)

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<context:property-placeholder location="/META-INF/classes/jdbc.properties" /> 
    <property name="driverClass" value="${jdbc.driverClassName}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        </bean> 

質問:プロジェクトAとプロジェクトbに2つのdatabase.proprtiesファイルを作成する必要はありません。私が欲しいのは、プロジェクトAにjdbc.propertiesファイルを1つだけ持ち、次にプロジェクトBにプロジェクトAのJDBC.proptiesファイルのプロパティを使用したいということです。

    <property name="driverClass" value="${jdbc.driverClassName}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        </bean>

それを行う方法はありますか?これがプロジェクトBの制限ですpom.xml

    <project>
    <parent>
    <groupId>com.ambientideas</groupId>
    <artifactId>sample08-multimodulejava-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>sample-multimodulejava-module2</artifactId>
    <packaging>jar</packaging> 
    <dependencies>
    <dependency>
    <groupId>com.ambientideas1</groupId>
    <artifactId>sample-multimodulejava-module1</artifactId>
    <version>${version}</version>
    <description>Project B<description>
</dependency>
    </dependencies> 
    </project>

前もって感謝します。

4

1 に答える 1

0

プロパティ ファイルがプロジェクト A の jar に組み込まれている場合、他のコードをロードするクラスパスでも利用できるため、使用するのと同じ方法でプロジェクト B から使用できるはずです。プロジェクトAから。

これは単なる偶然であり、プロジェクトのセットアップをお勧めする方法ではないことに注意してください。アーティファクトがどの環境にも依存しないように、構成は常に外部化する必要があります。

PS アンビエント アイデア? マシュー・マッカローの会社じゃないの?もしそうなら、あなたは Java 全般、特に Maven について社内に豊富な専門知識を持っています。外部からの指導はあまり必要ありません。

于 2012-12-24T03:50:13.067 に答える