无法使用 exec-maven-plugin 执行 maven 多模块项目

couldn't execute maven multi module project using exec-maven-plugin

我有一个多模块 Maven 项目 here .

父项目有 3 个模块 common,with-paranamer,without-paranamer。

with-paranamer和without-paranamer模块相互独立,都依赖于common模块

在没有参数的模块中,我添加了对公共模块的依赖,如 this

下面是项目的结构。

.
├── pom.xml
├── common
│   ├── pom.xml
│   ├─ src
│      ├── main
│         ├─ java
│            ├── ParanamerUtil.java
│            ├── PersonV03.java
│            └── TestCaseClasses.java
│
├── with-paranamer
│   ├── pom.xml
│   ├──src
│      ├── main
│         ├── java
│            └── ParanamerExample.java
|
└── without-paranamer
    ├── pom.xml
    ├─ src
       ├── main
          ├── java
              └── ParametersExample.java

我想使用 exec-maven-plugin 在没有参数的模块中执行 ParametersExample class。 所以我在父 pom.xml here.
的 pluginManagement 下添加了 exec-maven-plugin 在没有参数的模块中,我添加了像 this.

这样的插件

我已经按照 Whosebug post here.

中提到的上述说明进行操作

当我运行mvn verify命令成功

但是当我尝试运行命令时 mvn exec:java -Dexec.mainClass=ParametersExample -pl without-paranamer 我遇到了以下错误。

WARNING] The POM for paranamer-maven-demo:common:jar:1.0-SNAPSHOT is missing, no dependency information available
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.189 s
[INFO] Finished at: 2018-09-07T17:23:07-04:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project without-paranamer: Could not resolve dependencies for project paranamer-maven-demo:without-paranamer:jar:1.0-SNAPSHOT: Could not find artifact paranamer-maven-demo:common:jar:1.0-SNAPSHOT -> [Help 1]

如何使用 exec-maven-plugin 使我的程序 运行 成功。

without-paranamer 模块依赖于 paranamer-maven-demo.common.1.0-SNAPSHOT,但它在哪里可以找到它?最明显的答案:在本地存储库中。但它不在那里,除非你安装它(另外,你必须安装父项目的pom)。

mvn -N clean install - 安装父 pom。(-N 代表 non recursive,这意味着目标将只为父项目执行,而不为子模块执行)。

mvn -pl common clean install - 安装 common 模块。

现在,调用exec:java将成功(但没有打印任何输出,因为插件管理配置中的<skip>true</skip>