2015-12-16 24 views
5

私はMavenでファイルを置き換える適切な方法は何ですか?

<profiles> 
     <profile> 
      <id>dev</id> 
      <properties> 
       <profileVersion>DEV</profileVersion> 
       <webXmlFolder>${id}</webXmlFolder> 
      </properties> 
     </profile> 

     <profile> 
      <id>test</id> 
      <properties> 
       <profileVersion>1.0.0-RC1</profileVersion> 
       <webXmlFolder>${id}</webXmlFolder> 
      </properties> 
     </profile> 

     <profile> 
      <id>prod</id> 
      <properties> 
       <profileVersion>1.0.0-Final</profileVersion> 
       <webXmlFolder>${id}</webXmlFolder> 
      </properties> 
     </profile> 
    </profiles> 

の下に指定された3種類のプロファイル、とMavenのアプリを持っていると私はこのようにMavenの構造を持っている:

のsrc /メイン/設定/デフォルト/ WEB-INF/web.xmlの

SRC /メイン/設定は/ dev/WEB-INF/web.xmlの

SRC /メイン/設定/試験/ WEB-INF/web.xmlの

のsrc /メイン/設定/ PROD/WEB-INF/web.xmlの

のsrc /メイン/ webappの/ WEB-INF/

私の仕事は、Webアプリケーション/ WEB-へのweb.xmlを任命設定することです構築中のINFは、指定されたプロファイルに依存します。プロファイルが指定されていない場合、web.xmlはデフォルトのフォルダからコピーします。

私はプラグインを持っていますが、動作しません。

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>2.4</version> 
      <executions> 
       <execution> 
        <id>copy-prod-resources</id> 
        <phase>process-resources</phase> 
        <goals> 
         <goal>copy-resources</goal> 
        </goals> 
        <configuration> 
         <overwrite>true</overwrite> 
         <outputDirectory>${project.build.outputDirectory}/classes/WEB-INF</outputDirectory> 
         <resources> 
          <resource> 
           <directory>src/main/config/${webXmlfolder}/WEB-INF</directory> 
           <filtering>true</filtering> 
          </resource> 
         </resources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

私はその問題に多くの時間を費やしており、今は少し混乱しています。

+2

定義済みのプロファイルはすべて、$ {id}プロパティに依存します。これはPOMの残りの部分で定義されていますか? –

+0

私の間違いは、$ {id}のプレースホルダーの値がプロファイルID名の代わりに[groupId:artifactId:version]のように定義されたアプリケーションのフルネームであるということでした。 :) –

答えて

3

これですべてが機能しています。

<properties> 
    <webXmlFolder>default</webXmlFolder> 
    <profileVersion>defaultVersion</profileVersion> 
</properties> 

<profiles> 
    <profile> 
     <id>dev</id> 
     <properties> 
      <profileVersion>DEV</profileVersion> 
      <webXmlFolder>dev</webXmlFolder> 
     </properties> 
    </profile> 

    <profile> 
     <id>test</id> 
     <properties> 
      <profileVersion>1.0.0-RC1</profileVersion> 
      <webXmlFolder>test</webXmlFolder> 
     </properties> 
    </profile> 

    <profile> 
     <id>prod</id> 
     <properties> 
      <profileVersion>1.0.0-Final</profileVersion> 
      <webXmlFolder>prod</webXmlFolder> 
     </properties> 
    </profile> 
</profiles> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>2.4</version> 
      <executions> 
       <execution> 
        <id>copy-web.xml</id> 
        <phase>package</phase> 
        <goals> 
         <goal>copy-resources</goal> 
        </goals> 
        <configuration> 
         <overwrite>true</overwrite> 
         <outputDirectory>${basedir}/target/classes/WEB-INF</outputDirectory> 
         <resources> 
          <resource> 
           <directory>src/main/config/${webXmlFolder}/WEB-INF</directory> 
          </resource> 
         </resources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 
+0

web.xmlのファイルが変更されたときはどうすればいいですか?例: 'web.dev.xml'' web.preprod.xml' 'web.prod.xml' – Mercer

+0

'mvn clean install -P dev' - コンソールに入力されたこのコマンドは、devプロファイルでMavenライフサイクルを開始します。 "-P profile"でプロファイルを指定することができます。 –

+1

あなたのソリューションを投稿してくれてありがとう! –

関連する問題