得到maven clean install就像maven clean + maven install一样工作

时间:2014-05-01 23:17:45

标签: java maven

我有以下项目层次结构:

app
|-module1
| |-pom.xml
|-module2
| |-pom.xml
|-pom.xml

Module1和module2都将文件复制到同一目标目录,因此我使用应用程序的pom.xml清除该目录。我的问题是,现在的执行顺序是module1 [clean],module1 [install],module2 [clean],module2 [install],app [clean],app [install],所以所有module1和module2放入该目录将被删除。

我想让它首先执行所有干净,然后全部安装,即使我运行mvn clean install。或者如果在module1 [install]和module2 [install]之前有另一种方法来执行app [clean],那也可以。

修改

我最终制作了一个单独的模块(Netbeans POM projekt)。不是我希望的溶剂,但它现在有效。

1 个答案:

答案 0 :(得分:3)

问题的根源在于,你试图让Maven做一些与Maven的多模块"惯例相矛盾的事情,以及与Maven&冲突的事情#39; s"理解"一个"目标目录"。 Maven's反应堆的运行方式是有原因的,它是为了保护Maven"精神" (或"约定")模块在多模块构建中的结构。

在Maven中,target目录应该只属于一个项目:每个项目都有自己的target目录。在您的方案中,targetappmodule1应该有一个不同的module2目录。

我认为您最好的选择是,为了实现您的目标保持您的构建过程灵活,请:

  1. module1将自己的JAR输出到自己的target目录(module1/target)。
  2. module2将自己的JAR输出到自己的target目录(module2/target)。
  3. app(父模块)添加一个插件,该插件将从module1/targetmodule2/target收集所需的任何内容到app/target,并对这些工件执行任何处理。