我有一个由几个子模块组成的maven项目。构建一个子模块后执行maven插件
我们称之为子模块shared
和webapp
。该项目通常由位于父目录中的父POM构建。所以目录布局看起来像:
myproject/pom.xml
myproject/shared/pom.xml
myproject/webapp/pom.xml
我有一个特定的插件,我想从顶层目录中的命令行可执行。我不希望它在任何阶段默认运行。所以通常我想运行mvn clean install
,在这种情况下插件不应该执行。但是我也希望能够说0123'并且执行应该在这种情况下运行,但是执行应该只运行一次webapp
子模块。当我在命令行中指定此操作时,不应为父POM或shared
子模块执行该执行。
我遇到的问题是,如果我在父POM中定义执行,它会为每个子模块重复运行。如果我在webapp
POM中定义执行,则无法通过Maven的命令行调用进行访问。
我想在一个Maven的COMAND做到这一点和单指令还必须能够建立&运行阶段的所有子模块 - 不仅仅是webapp
子模块 - 因此-pl
命令行选项不起作用对于这种情况?
这种事可能吗?如果这是不可能的,我会接受一个答案说明。
在webapp中创建一个配置文件,并通过激活的配置文件运行它。否则,我不明白为什么你需要从命令行和构建内运行这个插件? – khmarbaise
@khmarbaise是对的,这绝对是你想要的。只需在webapp中创建一个单独的配置文件,将您的目标设为您想要的任何阶段,然后使用已定义的配置文件从父项运行mvn命令。 -P选项甚至传播到子模块。 – jholusa
配置文件方法工作得非常好,可以让我从顶层POM访问执行 - 谢谢。然而,我找不到一个解决方案,它允许我从命令行**调用执行,而没有将它绑定到一个阶段。我想知道这是否可能。 – amoe