我有一个多模块项目,其中每个模块都可以很好地部署到 Artifactory,直到我将 spring-cloud-contract-maven-plugin 添加到其中一个模块(服务,因为它是生产者 API)。
该项目具有以下结构:
parent
- common (shared DTOs)
- client
- service
未来我们想去掉client和common,在consumer中有Feign客户端来减少耦合,并且有一个没有内部模块的基本项目,但是现在我们必须保持这个结构。
我首先注意到存根没有被推送到 Artifactory,所以我最初的解决方法是将它添加到 Jenkins 管道中
sh './mvnw clean deploy -U --projects=xxx-service'
它部署服务和存根,但我注意到执行此命令时没有部署任何模块:
sh './mvnw clean deploy -U'
这是输出的结尾:
[INFO] Installing /xxx/xxx-service/target/xxx-service-1.7.0-SNAPSHOT.jar to /xxx/.m2/repository/xxx/xxx-service/1.7.0-SNAPSHOT/xxx-service-1.7.0-SNAPSHOT.jar
[INFO] Installing /xxx/xxx-service/pom.xml to /xxx/.m2/repository/xxx/xxx-service/1.7.0-SNAPSHOT/xxx-service-1.7.0-SNAPSHOT.pom
[INFO] Installing /xxx/xxx-service/target/xxx-service-1.7.0-SNAPSHOT-stubs.jar to /xxx/.m2/repository/xxx/xxx-service/1.7.0-SNAPSHOT/xxx-service-1.7.0-SNAPSHOT-stubs.jar
[INFO]
[INFO] --- maven-deploy-plugin:2.8.2:deploy (default-deploy) @ xxx-service ---
[INFO] Deploying xxx:xxx-service:1.7.0-SNAPSHOT at end
我试图将所有 Maven 配置移动到父 POM 文件中,并将合同和基本测试类保留在服务模块中。我查看了解释如何配置插件的这个页面,我看到我可以使用contractsDirectory来指定合同文件的目录,gmavenplus-plugin来指定生成的测试的目录和packageWithBaseClasses来指定包基类。但是我看不到任何指定基类目录的方法。我无法将基本测试类移动到父类,因为它们使用服务模块的某些类来生成模拟。
有什么办法吗,或者我必须为合同创建一个单独的项目?
提前致谢