java - 无法使用 exec-maven-plugin 执行 Maven 多模块项目
问题描述
我在这里有一个多模块 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 使我的程序成功运行。
解决方案
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>
在插件管理配置中)
推荐阅读
- unit-testing - 如何以编程方式在 Katalon 中指定代理?
- java - 在 Java 中定义一个 int 数组
- ios - 应用程序终止时 Swift 向服务器发送请求
- sql - 最相关记录的 SQL 搜索查询
- ios - 新 Mac 中的 pod 设置错误
- entity-framework - 将自定义集合的属性映射到 EF 中的列
- javascript - Jquery:基于2个按钮的点击功能隐藏和显示div
- apache - 无法启动 z/OS Apache Web 服务器
- sql - 显示同一数据库中两个表的列中的数据差异
- java - 使用 selenium 将元素滚动到屏幕中间