2

私はMaven構成では比較的新しいことを述べたいと思います。

私の状況:

  • Maven 3.0.5 を使用して J2E アプリケーションを構築します
  • アプリケーションは、ローカル、開発、テスト、および本番の 4 つの異なる環境にデプロイされます。
  • Maven プロファイルを使用して、環境固有の構成を構成します
  • これらの構成はproperties、ファイル システム内のファイルで定義しました。

これはそれらのためのファイルシステムです:

<my-project-root>
---profiles
------local
---------app.properties
------dev
---------app.properties
------test
---------app.properties

次のロジックを使用して、対応するプロパティ ファイルを my に読み込みますpom.xml

<profiles>
    <profile>
        <id>local</id>
        <!-- The development profile is active by default -->
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <build.profile.id>local</build.profile.id>
        </properties>
    </profile>
    <profile>
        <id>dev</id>
        <properties>
            <build.profile.id>dev</build.profile.id>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <build.profile.id>prod</build.profile.id>
        </properties>
    </profile>
    <profile>
        <id>test</id>
        <properties>
            <build.profile.id>test</build.profile.id>
        </properties>
    </profile>
</profiles>
<build>
    <finalName>MyProject</finalName>
    <plugins>
    </plugins>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
        <resource>
            <directory>profiles/${build.profile.id}</directory>
        </resource>
    </resources>
</build>

この構成により、現在のプロファイルのそれぞれのプロパティをほとんどどこでも使用できます。どこでも、しかし<plugins>セクション。たとえば、データベースの URL や資格情報をそのようなプロパティ ファイルからロードしたいのですが、それらをプラグイン セクションに含めるapp.propertiesと、プラグイン セクションで評価されません (たとえば${endpoint}、データベース エンドポイントとして値を取得します)。

セクションでアクセス可能なプロファイルのファイルから読み込まれたプロパティを取得するにはどうすればよい<plugins>ですか?

pom.xmlPS: はい、これらのプロパティをタグの下の as プロパティに直接追加すると<profiles>、それらにアクセスできますが、パスワードを pom から除外したいと思います。

4

1 に答える 1

1

やりたいことができた。私はproperties-maven-pluginリンクされたものを使用しました、この答えを言ってください。

私がしたことは次のとおりです。

  • properties-maven-pluginロードする必要のあるファイルを読み取るために を追加しました

    <plugin>
       <groupId>org.codehaus.mojo</groupId>
       <artifactId>properties-maven-plugin</artifactId>
       <version>1.0-alpha-2</version>
       <executions>
         <execution>
           <phase>initialize</phase>
           <goals>
             <goal>read-project-properties</goal>
           </goals>
           <configuration>
             <files>
               <file>profiles/${build.profile.id}/app.properties</file>
             </files>
           </configuration>
         </execution>
       </executions>
     </plugin>
    

    残念ながら、ここでは、プラグインがディレクトリ内のすべてのプロパティ ファイルを読み取るようにすることはできませんでしたが、これで十分だと思います。

  • また、上記のプラグイン定義によって Eclipse で発生したエラーを削除する必要もありました ( Plugin execution not covered by lifecycle configuration)。それを行うには、次の投稿の指示に従いました。

これらの手順により、必要なプロパティが、それらを使用するプラグインで利用できるようになりました。

注:実際にはプロパティはmavenコマンドの後にロードされますが、すべてのケースでプロパティに依存するすべてのゴールが一連のゴールコールでゴールのcompile後に実行されるため、これで十分です。compile

于 2015-03-29T12:16:16.133 に答える