我的项目结构(多模块)就像这样
parent
projectA
projectB
... other modules
parent
实际上也有一个父(Spring Boot)。
我已经设置了一个Jenkins工作来编译&测试每次提交,所以运行:
mvn -f pom.xml clean install
一切正常。 ProjectB
取决于ProjectA
(类似于常见的类项目),并且是一个Spring启动应用程序。所以依赖信息是常规的:
<dependency>
<groupId>Group</groupId>
<artifactId>ProjectA</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
ProjectB
在Jenkins中有一个单独的工作来构建可部署的jar文件并将其部署到服务器。所以那里的命令是:
mvn -f ProjectB/pom.xml clean install antrun:run
此操作失败并显示如下消息:
[WARNING] The POM for Group:ProjectB:1.0-SNAPSHOT is missing, no dependency information available
...
[ERROR] Failed to execute goal on project host-api: Could not resolve dependencies for project Group:ProjectB:1.0-SNAPSHOT: The following artifacts could not be resolved: Group:ProjectA:jar:1.0-SNAPSHOT...
现在我可以通过在mvn install
目录中执行ProjectA
来解决此问题 - 我已经对此进行了测试,但它确实解决了这个问题。
但我的问题是我为什么要?不应该认为Maven应该在本地仓库中安装jar吗?
提前致谢
答案 0 :(得分:0)
运行构建时指定依赖项构建部件:
答案 1 :(得分:0)
所以我认为规则是,首先建立父项目,然后在子项目上运行目标。
我的修复是首先在父项目上运行clean install
,然后在Jenkins中运行-f ProjectB/pom.xml antrun:run