0

我在这里有一个多模块 Maven 项目。

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

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

在 without-paranamer 模块中,我添加了对像这样的通用模块的依赖。

下面是项目的结构。

.
├── 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

我想ParametersExample 使用 exec-maven-plugin 在没有参数的模块中执行类。所以我在父 pom.xml 的 pluginManagement 下添加了 exec-maven- plugin
在没有参数的模块中,我添加了这样的插件

我已按照此处的 stackoverflow 帖子中提到的上述说明进行操作。

当我运行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 使我的程序成功运行。

4

1 回答 1

3

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>在插件管理配置中)

于 2018-09-07T23:49:32.777 回答