我将以下合同存储库克隆到了我的本地文件系统中:
ABCnet
│ └── application-services-xyz
│ ├── clientA
│ │ └── shouldReturnHelloWorld.groovy
│ ├── mvnw
│ ├── mvnw.cmd
│ ├── pom.xml
当我们在生产者端处理遗留产品时,也许值得一提的是groupId和artifactId不遵循标准约定。这是上述合同仓库中的pom.xml:
<project xmlns:xsi="...">
<groupId>ABCnet</groupId>
<artifactId>application-services-xyz</artifactId>
<version>0.0.1</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.0.RELEASE</version>
<relativePath />
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<spring-cloud-contract.version>2.2.4.RELEASE</spring-cloud-contract.version>
<spring-cloud-dependencies.version>Hoxton.RELEASE</spring-cloud-dependencies.version>
<!-- We don't want to run tests -->
<skipTests>true</skipTests>
<excludeBuildFolders>true</excludeBuildFolders>
</properties>
<build>
<plugins>
<plugin>
<artifactId>spring-cloud-contract-maven-plugin</artifactId>
<groupId>org.springframework.cloud</groupId>
<version>${spring-cloud-contract.version}</version>
<extensions>true</extensions>
<configuration>
<!-- By default it would search under src/test/resources/ -->
<contractsDirectory>${project.basedir}</contractsDirectory>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
当我运行mvnw install
时,将创建具有以下结构的jar:
application-services-xyz-0.0.1-stubs.jar
├── META-INF
│ ├── ABCnet
│ │ └── application-services-xyz
│ │ └── 0.0.1
│ │ ├── contracts
│ │ │ └── clientA
│ │ │ └── shouldReturnHelloWorld.groovy
│ │ └── mappings
│ │ └── clientA
│ │ └── shouldReturnHelloWorld.json
│ └── MANIFEST.MF
我有一个生产者应用程序,我想从上面的stubs.jar中的合同生成测试。这是在生产者端配置合同插件的方式:
contracts {
contractDependency {
stringNotation = 'ABCet:application-services-xyz:0.0.1'
}
contractsMode = "LOCAL"
packageWithBaseClasses = 'com.abcmedia.services.xyz'
basePackageForTests='com.abcmedia'
baseClassMappings {
baseClassMapping("com.abcmedia.services.xyz.*", "de.abcmedia.services.xyz.ClientABase")
}
generatedTestSourcesDir = project.file('test-generated/java')
}
当我运行gradlew generateContractTests
时,会生成一个测试类:
package com.abcmedia.META_INF.ABCnet.application_services_xyz._0_0_1.contracts;
import com.abcmedia.services.xyz.ContractsClientABase;
@SuppressWarnings("rawtypes")
public class MeddbTest extends ContractsClientABase {
@Test
public void validate_shouldReturnHelloWorld() throws Exception {
...
}
}
这是我的问题:
com.abcmedia.ABCnet
而不是com.abcmedia.META_INF.ABCnet.application_services_xyz._0_0_1.contracts
我的资源已用尽,不胜感激。预先谢谢你!