2

次のプロジェクト構造があります。

src/
  main/
    java/
      ...
    resources/
      META-INF/
        context.xml
        persistence.xml
    webapp/
      WEB-INF/
        web.xml
        ...
      ...
  test/
    ...

pom.xml (具体的にはbuild一部) は次のようになります。

<build>
<finalName>...</finalName>

<plugins>
  <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
  </plugin>

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.3</version>
    <configuration>
      <webXml>src/main/webapp/WEB-INF/web.xml</webXml>
      <containerConfigXML>src/main/resources/META-INF/context.xml</containerConfigXML>
    </configuration>
  </plugin>
</plugins>
</build>

問題はcontext.xml、結果の WAR で 2 倍になることです。に登場します

  1. /META-INF- それが適切な場所であり、
  2. /WEB-INF/classes/META-INF. resources他のリソースと同様に、フォルダーからここにコピーされることがわかります。

アプリケーションは問題なくデプロイされますが、この重複は本当に気になります。セットアップの何が問題になっていますか?

4

3 に答える 3

0

WAR ビルドの場合、maven は次のデフォルトを使用します。

src/main/java goes to /WEB-INF/classes
src/main/resources goes to /WEB-INF/classes
src/main/webapp goes to /

したがって、問題をすばやく修正するには、META-INF を src/main/resources から src/main/webapp に移動するだけです

また、更新したことを確認してくださいcontainerConfigXML

于 2013-05-14T18:00:58.663 に答える
0

一般に、Java ベースの Maven プロジェクトの場合、ソース以外のファイルはプロジェクトの src/main/resources サブディレクトリに配置する必要があります。そのリソース ディレクトリの内容は、ビルドのプロセス リソース フェーズ中に出力ディレクトリ (デフォルトでは target/classes) にコピーされます。

Maven WAR プロジェクトの場合は、もう少し複雑です。Maven が WEB-INF/web.xml を見つけることを想定している src/main/webapp ディレクトリもあります。

WEB-INF ディレクトリは src/main/webapp の下に存在する必要があるため、src/main/resources で再度定義することは避けることをお勧めします。これは完全に有効で、2 つのディレクトリの内容がマージされますが、ファイルが両方で定義されていると混乱する可能性があります。src/main/resources のコンテンツは、src/main/webapp のコンテンツの上にコピーされるため、優先されます。

したがって、重複が見られます。

于 2013-05-14T12:22:38.570 に答える