1
MyProject > src
          > target
                   > MyProject   > classes (1)
                   > classes (2)

実際に新しくコンパイルされたコードは2に入れられますが、warファイルは1を使用して作成されます。したがって、私のwarファイルはまったく最新ではありません。

私は何をすべきですか?私のpomの抜粋の下に示されています...:

<build>
        <finalName>MyProject</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <webXml>src\main\webapp\WEB-INF\web.xml</webXml>
                    <warName>MyProject</warName>

                </configuration>
                <version>2.1.1</version>
            </plugin>
        </plugins>
    </build>
4

2 に答える 2

0

私はあなたが何を見せているのか少し疑問です。

通常、戦争プロジェクトでは、ターゲットは次のようなものでなければなりません

PROJ
  + target
    + classes
    + PROJ-version
      + WEB-INF
        + classes

target/PROJMavenWARプロジェクトで見たことがありません

私が示しているのがあなたが見たものである場合、それはMavenが常に行うことです。

ソースはコンパイルされ、クラスに入れられます。

WARの作成中に、プロジェクトを含むさまざまなファイルがWARの構造を形成するディレクトリtarget/classesにコピーされPROJ-version、WARファイルの作成に使用されます。

したがって、MavenがWARの作成に使用している問題はありません。これは、ビルド時target/PROJ-version/WEB-INF/classesにコピーされるためtarget/classesです。

そうでない場合は、おそらくPOMを共有することをお勧めします。あなたが言及したディレクトリは、WARプロジェクトには妥当ではないようです。

于 2012-10-17T08:25:40.970 に答える
0

target/PROJは爆発的な戦争に他なりません。

ターゲットディレクトリを削除してみてください。コマンドラインからMavenビルドを実行します。この時点ですべてのものがそのまま作成されているかどうかを確認します。その場合、両方の場所に更新されたクラスファイルが含まれており、そのターゲット/ PROJディレクトリが展開されたwarディレクトリであるため、Mavenは正しく動作しています。そのディレクトリへのパスを使用して、tomcat/webコンテナにコンテキストを設定できます。

于 2012-10-17T09:06:29.043 に答える