0

Webアプリケーションに2つのサーブレット構成ファイルがあります。1つは通常の環境(Heroku)用で、もう1つはWebLogic用です。「servlet-context.xml.weblogic」を「servlet-context.xml」にコピーする必要があるWebLogicビルド用のMavenプロファイルがあります。コピーがwarファイルのビルド後に行われることを除いて、すべてが機能しているように見えるため、正しいサーブレットコンテキストがパッケージに含まれていません。コピーを正しく行うためにmaven-antrun-pluginで使用する正しいビルドフェーズは何ですか?

これが私のPOM.xmlファイルの関連セクションです:

<plugin>
  <artifactId>maven-antrun-plugin</artifactId>
  <executions>
    <execution>
    <phase>test</phase>
    <goals>
      <goal>run</goal>
    </goals>
    <configuration>
      <tasks>
        <move
          file="${project.build.directory}/${project.build.finalName}/WEB-INF/spring/appServlet/radio-context.xml.weblogic"
          tofile="${project.build.directory}/${project.build.finalName}/WEB-INF/spring/appServlet/radio-context.xml"/>
      </tasks>
    </configuration>
    </execution>
  </executions>
</plugin>

これは次のエラーで失敗します。

Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.3:run (default) on project radio: An Ant BuildException has occured: Warning: Could not find file C:\workspace\radio\target\radio-1.0.0-BUILD-SNAPSHOT\WEB-INF\spring\appServlet\radio-context.xml.weblogic to copy. -> [Help 1]

ただし、に変更する<phase>package、コピーは機能しますが、戦争が構築された後です。

どんな助けでもいただければ幸いです。

4

2 に答える 2

3

参考として、このページには Maven のライフサイクル フェーズが一覧表示されています。

ビルドで考慮する必要がある主なフェーズは次のとおりです。

  • process-resources- ほとんどのファイルが配置される場所${project.build.directory}
  • package- これは、WAR が構築されるフェーズです。

しかし...

WAR プラグインのドキュメントを見ると、WAR リソースのコピーがゴールで${project.build.directory}/${project.build.finalName}発生し、これもフェーズで実行されます。war:warpackage

それでは、一歩後退しましょう。達成したいことはradio-context.xml、プロファイルに応じて異なるファイルを使用することです。おそらく、weblogic プロファイルで WAR プラグインを別の方法で構成することをお勧めします。

weblogic 用に別の webapp リソース ディレクトリを用意し、そこにカスタム radio-context.xml ファイルを置き、そのディレクトリのみを weblogic プロファイルに含めます。例えば

<project>
  ...

  <profiles>
    <profile>
            <id>weblogic</id>
            ...
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-war-plugin</artifactId>
                        <version>2.2</version>
                        <configuration>
                            <webResources>
                                <resource>
                                    <directory>src/main/webapp-weblogic</directory>
                                </resource>
                            </webResources>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
于 2012-09-27T06:25:52.387 に答える
2

process-resourcesを使用してみてください。これにより、戦争が構築される前にファイルがコピーされます。

于 2012-09-27T03:24:26.697 に答える