W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
為了避免通用倉庫中的消息合同重復(fù),當(dāng)很少有生產(chǎn)者將消息寫到一個(gè)主題時(shí),我們可以創(chuàng)建一個(gè)結(jié)構(gòu),將其余合同放置在每個(gè)生產(chǎn)者的文件夾中,并將消息合同放置在每個(gè)主題的文件夾中。
為了能夠在生產(chǎn)者端進(jìn)行工作,我們應(yīng)該指定一個(gè)包含模式,以通過我們感興趣的消息傳遞主題過濾通用存儲(chǔ)庫jar。
的Maven Spring Cloud Contract plugin
屬性允許我們執(zhí)行此操作。還需要指定includedFiles
,因?yàn)槟J(rèn)路徑將是公用存儲(chǔ)庫contractsPath
。groupid/artifactid
<plugin> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-contract-maven-plugin</artifactId> <version>${spring-cloud-contract.version}</version> <configuration> <contractsMode>REMOTE</contractsMode> <contractsRepositoryUrl>http://link/to/your/nexus/or/artifactory/or/sth</contractsRepositoryUrl> <contractDependency> <groupId>com.example</groupId> <artifactId>common-repo-with-contracts</artifactId> <version>+</version> </contractDependency> <contractsPath>/</contractsPath> <baseClassMappings> <baseClassMapping> <contractPackageRegex>.*messaging.*</contractPackageRegex> <baseClassFQN>com.example.services.MessagingBase</baseClassFQN> </baseClassMapping> <baseClassMapping> <contractPackageRegex>.*rest.*</contractPackageRegex> <baseClassFQN>com.example.services.TestBase</baseClassFQN> </baseClassMapping> </baseClassMappings> <includedFiles> <includedFile>**/${project.artifactId}/**</includedFile> <includedFile>**/${first-topic}/**</includedFile> <includedFile>**/${second-topic}/**</includedFile> </includedFiles> </configuration> </plugin>
ext { conractsGroupId = "com.example" contractsArtifactId = "common-repo" contractsVersion = "1.2.3" } configurations { contracts { transitive = false } }
dependencies { contracts "${conractsGroupId}:${contractsArtifactId}:${contractsVersion}" testCompile "${conractsGroupId}:${contractsArtifactId}:${contractsVersion}" }
task getContracts(type: Copy) { from configurations.contracts into new File(project.buildDir, "downloadedContracts") }
task unzipContracts(type: Copy) { def zipFile = new File(project.buildDir, "downloadedContracts/${contractsArtifactId}-${contractsVersion}.jar") def outputDir = file("${buildDir}/unpackedContracts") from zipTree(zipFile) into outputDir }
task deleteUnwantedContracts(type: Delete) { delete fileTree(dir: "${buildDir}/unpackedContracts", include: "**/*", excludes: [ "**/${project.name}/**"", "**/${first-topic}/**", "**/${second-topic}/**"]) }
unzipContracts.dependsOn("getContracts") deleteUnwantedContracts.dependsOn("unzipContracts") build.dependsOn("deleteUnwantedContracts")
contractsDslDir
屬性指定包含合同的目錄來配置插件contracts { contractsDslDir = new File("${buildDir}/unpackedContracts") }
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: