Java maven war插件不会忘记旧文件和依赖项,并创建一个包含已删除文件和依赖项的war

Java maven war插件不会忘记旧文件和依赖项,并创建一个包含已删除文件和依赖项的war,java,maven,intellij-idea,war,maven-war-plugin,Java,Maven,Intellij Idea,War,Maven War Plugin,你好,我有一个关于战争创造的奇怪问题 我使用maven war插件(在3.1.0、3.2.0和2.6中试用过)。当我运行war:war(或mvn clean package或类似程序)时,war被创建,但我注意到它总是打包项目历史中遇到的所有文件和依赖项。我注意到了这一点,因为war文件总是越来越大,打开它,我看到我在pom上声明了很多依赖项,但现在它们被删除了,最重要的是,我从项目中删除了一些类!我甚至试着开始一个新项目,结果没有改变 我想我用得不好。。。我应该做些什么来让他“忘记”历史,并强

你好,我有一个关于战争创造的奇怪问题

我使用maven war插件(在3.1.0、3.2.0和2.6中试用过)。当我运行war:war(或
mvn clean package
或类似程序)时,war被创建,但我注意到它总是打包项目历史中遇到的所有文件和依赖项。我注意到了这一点,因为war文件总是越来越大,打开它,我看到我在pom上声明了很多依赖项,但现在它们被删除了,最重要的是,我从项目中删除了一些类!我甚至试着开始一个新项目,结果没有改变

我想我用得不好。。。我应该做些什么来让他“忘记”历史,并强迫他在战争中考虑这个项目“原原本本”? 谢谢你的帮助

附言:

  • 我总是在开战前整理:战争
  • 我与IntelliJ创意社区2017.3合作
  • 由于技术限制,使用JDK1.7
为了完整起见,这里有我的pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>sduca-consumer-listener</groupId>
    <artifactId>sduca-consumer-listener</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <sourceDirectory>src/main/java</sourceDirectory>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.0</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <webappDirectory>/sduca</webappDirectory>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <!-- Using Spring 4 because of jdk 1.7 -->
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.3.18.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
    </dependencies>
</project>

4.0.0
消费者监听器
消费者监听器
1.0-快照
战争
UTF-8
src/main/java
org.apache.maven.plugins
maven编译器插件
3.6.0
1.7
1.7
org.apache.maven.plugins
maven战争插件
3.2.0
/sduca
org.springframework
SpringWebMVC
4.3.18.发布
log4j
log4j
1.2.17
javax.servlet
javax.servlet-api
3.1.0
EDIT1:我试图更改maven war插件、maven编译器插件和maven本身的版本,但没有任何更改

EDIT2:我尝试更改输出目录,但没有更改。我试图更改依赖项的版本,正如“预期”的那样,现在战争包括两个版本,变得越来越大

EDIT3:我重新安装了IntelliJ IDEA,升级到最新版本。没有任何更改,它只重置了包的内容,但它仍然“跟踪”内容和依赖项,并且在创建新包时仍然包含已删除的内容


EDIT4:我开始使用
mvn clean compile-war:war
而不是
mvn clean-package
,开始工作时,但随后返回了现有旧文件的问题。但是,我发现,如果我手动从war中删除多余的资源和*.class,它看起来会工作(至少它已经部署好了)。

这只是一个对我有用很多次的技巧

从pom.xml备份依赖项并将其删除。 如果执行干净的构建,它将显示所有Java类中的错误。还删除了以前的战争


现在,替换那些备份的依赖项并重新清理构建webapp。所有错误都将消失,war文件将按预期运行。

您应该运行
clean war:war
,而不是
war:war
。我不是Intellij用户,所以我不知道怎么做,但我想这应该是很简单的。首先,遵循配置惯例,删除maven war插件的配置
/sduca
。默认位置只是
src/main/webapp
…也删除
src/main/java
因为它是默认位置…只是尝试了
mvn clean package
?@我手动点击maven项目选项卡上的“clean”(在intellij gui的左侧)。我想这和你说的是一样的。我的建议是:安装(如果不存在)maven从命令行运行,然后运行
mvn clean package
,看看会发生什么。@减去Ok,我就知道了。我已经有了这种可能性,我也曾经这样做过。谢谢你的帮助,但结果是一样的:(你说的“备份依赖项”是什么意思?我试图删除“依赖项”从pom阻止,但在你的过程之后,战争仍然是一样的…我的意思是只需将那些
剪切粘贴到某个地方并构建你的Web应用程序,它应该可以根据我的要求工作。尽管我不是intellij用户…对不起