Spring Contract Maven 插件 pushStubsToScm 不工作
Spring Contract Maven Plugin pushStubsToScm does not work
我尝试在 生产者 端使用 Spring Contract Maven 插件来上传存根 jar 并与消费者共享。
我正在使用 Spring Cloud Contract 2.0.0.
我在我的项目the codes is uploaded to Github中配置了spring-cloud-contract-maven-plugin。
<plugin>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-contract-maven-plugin</artifactId>
<version>${spring-cloud-contract.version}</version>
<extensions>true</extensions>
<configuration>
<basePackageForTests>com.example.demo</basePackageForTests>
<baseClassMappings>
<baseClassMapping>
<contractPackageRegex>.*rest.*</contractPackageRegex>
<baseClassFQN>com.example.demo.RestVerifierBase</baseClassFQN>
</baseClassMapping>
</baseClassMappings>
<!-- We want to pick contracts from a Git repository -->
<!--<contractsRepositoryUrl>git://file://${project.basedir}/target/contract_git/</contractsRepositoryUrl>-->
<!-- Example of URL via git protocol -->
<!--<contractsRepositoryUrl>git://git@github.com:spring-cloud-samples/spring-cloud-contract-samples.git</contractsRepositoryUrl>-->
<!-- Example of URL via http protocol -->
<!--<contractsRepositoryUrl>git://https://github.com/spring-cloud-samples/spring-cloud-contract-samples.git</contractsRepositoryUrl>-->
<contractsRepositoryUrl>git://https://github.com/hantsy/contracts-git.git</contractsRepositoryUrl>
<!-- We reuse the contract dependency section to set up the path
to the folder that contains the contract definitions. In our case the
path will be /groupId/artifactId/version/contracts -->
<contractDependency>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
</contractDependency>
<!-- The mode can't be classpath -->
<contractsMode>REMOTE</contractsMode>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<!-- By default we will not push the stubs back to SCM,
you have to explicitly add it as a goal -->
<goal>pushStubsToScm</goal>
</goals>
</execution>
</executions>
</plugin>
当我 运行 命令 mvn clean install -DskipTests -DcontractsRepositoryUsername=hantsy -DcontractsRepositoryPassword=mypassword
失败时。
Caused by: org.eclipse.jgit.errors.TransportException: https://github.com/hantsy/contracts-git.git: Authentication is required but no CredentialsProvider has been registered
Update: 如果我将 contractsMode
设置为 LOCAL,它将失败并出现下载存根 jar 错误,可能类似于 this issue,在新版本中2.0.0,Spring 当 stubsMode 设置为本地时,云合同无法按预期从本地 maven 存储库解析 jar。
更新 2:我还尝试在 [=45] 中添加 contractsRepositoryUsername 和 contractsRepositoryPassword =] 合同 maven 插件配置,它不起作用。
contractsMode
需要 REMOTE
。我以你的例子为例,它适用于:
<contractsRepositoryUrl>git://git@github.com:marcingrzejszczak/contracts-git.git</contractsRepositoryUrl>
<contractsMode>REMOTE</contractsMode>
通过手动传递凭据,我看到了一些非常奇怪的东西...
我看到 [INFO] Passed username and password - will set a custom credentials provider
,这意味着用户名和密码已通过,我正在使用它们。但实际上我得到的是Authentication is required but no CredentialsProvider has been registered
,这是没有意义的。你能为此提交另一个错误吗?解决方法是使用代理。
更新:
问题已在此处修复https://github.com/spring-cloud/spring-cloud-contract/issues/678
我尝试在 生产者 端使用 Spring Contract Maven 插件来上传存根 jar 并与消费者共享。
我正在使用 Spring Cloud Contract 2.0.0.
我在我的项目the codes is uploaded to Github中配置了spring-cloud-contract-maven-plugin。
<plugin>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-contract-maven-plugin</artifactId>
<version>${spring-cloud-contract.version}</version>
<extensions>true</extensions>
<configuration>
<basePackageForTests>com.example.demo</basePackageForTests>
<baseClassMappings>
<baseClassMapping>
<contractPackageRegex>.*rest.*</contractPackageRegex>
<baseClassFQN>com.example.demo.RestVerifierBase</baseClassFQN>
</baseClassMapping>
</baseClassMappings>
<!-- We want to pick contracts from a Git repository -->
<!--<contractsRepositoryUrl>git://file://${project.basedir}/target/contract_git/</contractsRepositoryUrl>-->
<!-- Example of URL via git protocol -->
<!--<contractsRepositoryUrl>git://git@github.com:spring-cloud-samples/spring-cloud-contract-samples.git</contractsRepositoryUrl>-->
<!-- Example of URL via http protocol -->
<!--<contractsRepositoryUrl>git://https://github.com/spring-cloud-samples/spring-cloud-contract-samples.git</contractsRepositoryUrl>-->
<contractsRepositoryUrl>git://https://github.com/hantsy/contracts-git.git</contractsRepositoryUrl>
<!-- We reuse the contract dependency section to set up the path
to the folder that contains the contract definitions. In our case the
path will be /groupId/artifactId/version/contracts -->
<contractDependency>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
</contractDependency>
<!-- The mode can't be classpath -->
<contractsMode>REMOTE</contractsMode>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<!-- By default we will not push the stubs back to SCM,
you have to explicitly add it as a goal -->
<goal>pushStubsToScm</goal>
</goals>
</execution>
</executions>
</plugin>
当我 运行 命令 mvn clean install -DskipTests -DcontractsRepositoryUsername=hantsy -DcontractsRepositoryPassword=mypassword
失败时。
Caused by: org.eclipse.jgit.errors.TransportException: https://github.com/hantsy/contracts-git.git: Authentication is required but no CredentialsProvider has been registered
Update: 如果我将 contractsMode
设置为 LOCAL,它将失败并出现下载存根 jar 错误,可能类似于 this issue,在新版本中2.0.0,Spring 当 stubsMode 设置为本地时,云合同无法按预期从本地 maven 存储库解析 jar。
更新 2:我还尝试在 [=45] 中添加 contractsRepositoryUsername 和 contractsRepositoryPassword =] 合同 maven 插件配置,它不起作用。
contractsMode
需要 REMOTE
。我以你的例子为例,它适用于:
<contractsRepositoryUrl>git://git@github.com:marcingrzejszczak/contracts-git.git</contractsRepositoryUrl>
<contractsMode>REMOTE</contractsMode>
通过手动传递凭据,我看到了一些非常奇怪的东西...
我看到 [INFO] Passed username and password - will set a custom credentials provider
,这意味着用户名和密码已通过,我正在使用它们。但实际上我得到的是Authentication is required but no CredentialsProvider has been registered
,这是没有意义的。你能为此提交另一个错误吗?解决方法是使用代理。
更新:
问题已在此处修复https://github.com/spring-cloud/spring-cloud-contract/issues/678