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

实际新编译的代码被放入 2,但是战争文件是使用 1 创建的。因此我的战争文件根本不是最新的。

我该怎么办?如下所示我的 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

目标/项目不过是爆炸战争。

尝试删除目标目录。从命令行执行 Maven 构建。并检查是否所有的东西都按原样创建。如果是这样,那么 maven 的行为是正确的,因为这两个地方都包含更新的类文件,并且 target/PROJ 目录是爆炸的 war 目录。您可以使用该目录的路径在 tomcat/web 容器中设置上下文。

于 2012-10-17T09:06:29.043 回答
0

我对你展示的内容有点怀疑。

通常在战争项目中,目标应该是

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

我从未target/PROJ在 Maven WAR 项目中看到过

如果我展示的是你所看到的,那么这就是 Maven 一直在做的事情。

源代码被编译并放入类中。

在创建WAR的过程中,不同的文件,包括项目的target/classes,都会被拷贝到PROJ-version构成WAR结构的目录中,用来创建WAR文件。

因此,Maven 在创建 WAR 时使用应该没有问题target/PROJ-version/WEB-INF/classes,因为它是在构建时复制的target/classes

如果不是你的情况,我可能会建议你分享你的 POM。您提到的目录对于 WAR 项目似乎不合理。

于 2012-10-17T08:25:40.970 回答