Maven 2 如何从Maven';谁的目标目录?

Maven 2 如何从Maven';谁的目标目录?,maven-2,maven-plugin,Maven 2,Maven Plugin,如何从Maven的目标目录中删除生成的构建工件?Maven生成一个jar或war文件到目标目录。我希望在maven将jar/war文件安装到本地存储库之后(即,在maven执行“安装”目标之后)删除该文件。删除可能发生在安装目标或我手动执行的单独目标 请注意,我希望保留目标目录的其他部分不变,例如target/site和target/surefire报告。Maven中没有任何内置内容可以做到这一点。您可以在安装后使用该插件执行删除工件的Ant脚本,或者使用该插件使用命令行删除工件,或者编写自己的

如何从Maven的目标目录中删除生成的构建工件?Maven生成一个jar或war文件到目标目录。我希望在maven将jar/war文件安装到本地存储库之后(即,在maven执行“安装”目标之后)删除该文件。删除可能发生在安装目标或我手动执行的单独目标


请注意,我希望保留目标目录的其他部分不变,例如target/site和target/surefire报告。

Maven中没有任何内置内容可以做到这一点。您可以在安装后使用该插件执行删除工件的Ant脚本,或者使用该插件使用命令行删除工件,或者编写自己的插件


我认为做这些事情没有什么价值。Maven设计用于将中间和最终工件放置在
target
中,以提高后续构建的效率。没有什么可以做这件事的原因已经表明这没有什么价值。如果它对您有价值,您有一些选择。

只需使用clean插件并在安装阶段后运行执行:

  <plugin>
    <artifactId>maven-clean-plugin</artifactId>
    <version>2.2</version>
    <executions>
      <execution>
        <id>auto-clean</id>
        <phase>install</phase>
        <goals>
          <goal>clean</goal>
        </goals>
        <configuration>
          <filesets>
            <fileset>
              <directory>${project.build.outputDirectory}</directory>
              <includes>
                <include>**/*.jar</include>
              </includes>
            </fileset>
           </filesets>
         </configuration>
      </execution>
    </executions>
  </plugin>

maven清洁插件
2.2
自动清洗
安装
清洁的
${project.build.outputDirectory}
**/*jar先生

我知道我有点晚了。但我想问题是,maven项目会自动归档工件。在我的例子中,我禁用了自动归档,只是使用构建后操作手动归档了工件。这样,只有我感兴趣的工件被归档。我愿意将生成的工件保留在磁盘上,直到下一次构建运行。

出于好奇,这背后的原因是什么?我以前见过这样做,当有人想要创建工件(如NSIS exe文件),但使用jar工件类型,因为它有一组方便的生命周期绑定,或者如果他们不关心中间工件(例如,生成exe的jar文件)。基本上,我是在持续集成服务器中运行maven构建,我只对安装到本地repo的报告和内容感兴趣。其余的文件只是在浪费空间,而我的jar文件恰好相当大。过滤器为+1,但目录元素应为${project.build.outputDirectory}以允许重写的值。我只需要从结果中删除特定的目录。从2.3版开始,插件默认删除整个目录,除非在标记中指定excludeDefaultDirectories属性。见多米的答案。话虽如此,我仍然想知道为什么会这样做。