web-dev-qa-db-ja.com

Mavenプロファイル内でのプロパティタグの使用

私は「Maven:The Complete Reference」、特にプロファイル内の<properties...タグの使用を文書化したセクションを参照しています。 <profile...タグはこちら: こちらをご覧ください

 <profile>
            <id>development</id>
            <activation>
                <activeByDefault>true</activeByDefault>
                <property>
                    <name>environment.type</name>
                    <value>dev</value>
                </property>
            </activation>
            <properties>
                <database.driverClassName>com.mysql.jdbc.Driver</database.driverClassName>
                <database.url>
                    jdbc:mysql://localhost:3306/app_dev
                </database.url>
                <database.user>development_user</database.user>
                <database.password>development_password</database.password>
            </properties>
        </profile>

私がよくわからないのは、mvn install -Denvironment.type=devコマンドを実行するとどうなるかです。

  • これにより、.propertiesファイルが作成されますか?
  • そうでない場合、アプリが開発でテストされるときに、Tomcatは(たとえば)個々のプロパティをどこでどのように読み取るのでしょうか?
13
balteo

これにより、.propertiesファイルが作成されますか?

いいえ、ありません。これにより、Mavenが使用するプロパティが設定されます。これは、mvn install -Denvironment.type=development mavenは、変数 'database.user'に値 'development_user'を使用します(pomsおよびフィルター処理されたリソースで$ {database.user}として使用できます)。

そうでない場合、アプリが開発でテストされるときに、Tomcatは(たとえば)個々のプロパティをどこでどのように読み取るのでしょうか?

重要なのは、プロファイル(properties.files)に応じてカスタマイズするリソースをフィルター処理(および変更)するようにmavenに指示することです。

したがって、最初にリソースをフィルタリングするためにMavenと言う必要があります。

<build>
    <resources>
        <resource>
             <directory>src/main/resources</directory>
             <filtering>true</filtering>
        </resource>
    </resources> 
</build>

次に、Maven変数を使用するようにプロパティファイルを変更します。たとえば、dbプロパティファイルは次のようになります。

database.driverClassName=${database.driverClassName}
database.url=${database.url}
#...
23
polypiel