【问题标题】:Maven: deleted files (antrun) still in final war fileMaven:删除的文件(antrun)仍在最终的战争文件中
【发布时间】:2010-02-22 15:37:34
【问题描述】:

我使用 antrun 插件根据使用的配置文件删除和移动一些属性文件:

<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
    <execution>
        <phase>compile</phase>
        <goals>
            <goal>run</goal>
        </goals>
        <configuration>
            <tasks>
                <delete>
                    <fileset dir="${project.build.outputDirectory}/com/.../props">
                        <exclude name="pm-web-${profile.id}.xml" />
                    </fileset>
                </delete>
                <move file="${project.build.outputDirectory}/com/.../props/pm-web-${profile.id}.xml"
                    tofile="${project.build.outputDirectory}/com/.../props/pm-web.xml" />
            </tasks>
        </configuration>
    </execution>
</executions>

当我检查目标/类文件夹时,我可以看到“不需要的”属性文件已被正确删除,并且移动任务也已正确执行。但是,当我查看构建的战争文件时,我发现已删除的文件仍在其中(移动的文件在战争中是可以的)。

我不明白这怎么可能;我假设战争插件基本上是目标文件夹?由于文件已从目标文件夹中正确删除,我希望它们也不会参与战争。

为了使事情复杂化(抱歉),我注意到删除有时会部分起作用,这意味着:有时某些文件夹(不是全部)已“从战争中删除”。

我尝试过更改任务的目标(没有运气),但我认为大多数目标无论如何都是在建立战争之前发生的。

感谢您的帮助,
斯蒂金

【问题讨论】:

  • 如果你运行mvn clean package会发生什么?
  • 帕斯卡,这行得通!但是我不明白为什么;我之前尝试过 clean 但不是在一个命令中(先清理然后打包)。即使没有清洁,我也希望它能够工作。知道可能是什么原因吗?

标签: maven-2


【解决方案1】:

war mojo 在创建 .war 存档之前在 ${project.build.directory}/${project.build.finalName} 目录中构建 webapp。也许您的属性文件在添加 antrun 内容之前就在那里。在这种情况下,从target/classes 中删除属性文件并没有从${project.build.directory}/${project.build.finalName} 中删除它们,并且这些文件仍然以最终的.war 结尾。但也许我猜得太多了,我完全错了。看看您是否可以在清理完所有内容后重现该问题。

【讨论】:

  • 确实,如果我清理并构建 profile1,那么只有 profile1 的属性在战争中。如果我随后为 profile2 进行构建(带有清理),那么 profile1 和 profile2 的属性就在战争中。所以我想我每次都会简单地执行 clean package 。发送!
【解决方案2】:

尝试改变

<phase>compile</phase>

<phase>prepare-package</phase>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 2022-08-22
    • 1970-01-01
    • 1970-01-01
    • 2015-10-29
    • 1970-01-01
    • 2015-02-18
    相关资源
    最近更新 更多