我有一个多模块Maven项目here。
父项目有3个通用的模块,带有-命名器,没有-命名器。
with-paranamer和no-paranamer模块彼此独立,并且都依赖于公共模块。
在不带参数的模块中,我已对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
类。
因此,我在父pom.xml here的pluginManagement下添加了exec-maven-plugin。
在不带参数的模块中,我添加了this之类的插件。
我已经按照stackoverflow帖子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使程序成功运行。
答案 0 :(得分:1)
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>
而没有输出任何输出)