3

Maven 2 では、次のようなプロファイル プロパティを設定できました。

<profiles>
    <profile>
        <id>test</id>
        <properties>
            <region>test</region>
            <application-url>http://localhost:8080/myTestApp</application-url>
            <cookie-name>TestCookie</cookie-name>
        </properties>
    </profile>

    <profile>
        <id>production</id>
        <properties>
            <region>production</region>
            <application-url>http://prodserver/myProductionApp</application-url>
            <cookie-name>ProductionCookie</cookie-name>
        </properties>
    </profile>
<profiles>

コンパイル時に、Maven は Spring Bean のこれらの構成値を置き換えます。たとえば、Spring Bean を次のように定義したとします。

<bean id="cookie-name" class="java.lang.String">
    <constructor-arg value="${cookie-name}"/>
</bean>

プロジェクトをビルドするときに指定-P testしたのは、Maven が Bean のセットを次のように設定することです。

<bean id="cookie-name" class="java.lang.String">
    <constructor-arg value="TestCookie"/>
</bean>

そして、私が指定したとき-P production、mavenは再びテキストを正しいプロパティに置き換えました

<bean id="cookie-name" class="java.lang.String">
    <constructor-arg value="ProductionCookie"/>
</bean>

サポートする環境と顧客の数が増えるにつれて、私はこの機能をより活用するようになりました。

Maven 3 にアップグレードしようとしましたが、この動作がなくなったか壊れているようです。置き換えられたものを見つけることができないようです。

この動作を維持しながらMaven3にアップグレードする方法、またはアップグレードできるかどうかについての洞察はありますか?

4

3 に答える 3

4

Maven 3 にアップグレードしようとしましたが、この動作がなくなったか壊れているようです。置き換えられたものを見つけることができないようです。

リソースのフィルタリングは、Maven 3 で問題なく機能します。次のプロジェクト構造が与えられます。

.
├──pom.xml
└── src
    ├──メイン
    │ ├──ジャワ
    │ │ └──com
    │ │ └── スタックオーバーフロー
    │ │ └── App.java
    │ └── 資料
    │ └──beans.xml
    └──テスト
        └──ジャワ
            └──コム
                └──スタックオーバーフロー
                    └── AppTest.java

次の場合pom.xml

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.stackoverflow</groupId>
  <artifactId>Q4206883</artifactId>
  <version>1.0-SNAPSHOT</version>
  ...
  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>
  </build>
  <profiles>
    <profile>
      <id>test</id>
      <properties>
        <region>test</region>
        <application-url>http://localhost:8080/myTestApp</application-url>
        <cookie-name>TestCookie</cookie-name>
      </properties>
    </profile>
    <profile>
      <id>production</id>
      <properties>
        <region>production</region>
        <application-url>http://prodserver/myProductionApp</application-url>
        <cookie-name>ProductionCookie</cookie-name>
      </properties>
    </profile>
  </profiles>
</project>

そして、どこbeans.xmlに含まれています:

<bean id="cookie-name" class="java.lang.String">
    <constructor-arg value="${cookie-name}"/>
</bean>

任意のプロファイルで maven を実行します。例:

$ mvn -P テスト プロセス リソース
[情報] プロジェクトをスキャンしています...
...

期待される結果を生成します。

$ cat target/classes/beans.xml 
<bean id="cookie-name" class="java.lang.String">
    <constructor-arg value="TestCookie"/>
</bean>

テスト済み:

$ mvn --バージョン
Apache Maven 3.0 (r1004208; 2010-10-04 13:50:56+0200)
Java バージョン: 1.6.0_22
Java ホーム: /usr/lib/jvm/java-6-sun-1.6.0.22/jre
デフォルトのロケール: en_US、プラットフォームのエンコード: UTF-8
OS 名: 「linux」 バージョン: 「2.6.35-22-generic」 アーキテクチャ: 「i386」 ファミリー: 「unix」

これが得られたものでない場合は、再現できるいくつかのピースを提供してください.

于 2010-11-18T21:01:27.297 に答える
4

一度に1つのリンクしか投稿できず、明らかに3分ごとに1つの回答しか投稿できません:-(

http://jira.codehaus.org/browse/MRESOURCES-117

于 2010-12-15T22:53:00.240 に答える
2

maven-resources-plugin の最新リリース バージョン (2.4.3) は壊れています。

http://jira.codehaus.org/browse/MRESOURCES-104

于 2010-12-15T22:29:57.527 に答える