Maven:已删除的文件(antrun)仍在最终的war文件中

时间:2010-02-22 15:37:35

标签: maven-2

我使用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>

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

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

使事情变得复杂(对不起)我注意到删除有时会部分地起作用,这意味着:有时一些文件夹(不是全部)已经“从战争中删除”。

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

感谢您的帮助,
斯泰恩

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

尝试更改

<phase>compile</phase>

<phase>prepare-package</phase>