在我的本地仓库中找不到Spring云合约存根

时间:2017-01-17 04:29:53

标签: java maven-3 spring-cloud-contract

使用Spring Cloud Contract 1.0.2.RELEASE,我能够在我的本地Maven仓库中发布存根,但是当我运行测试时,消费者端找不到它们。

在消费者方面,它为本地maven repo选择了一个与生产者所拥有的不同的位置:尽管Spring Cloud Contract和Aether库记录良好,但我花了一段时间才弄清楚它的位置,作为位置我用于本地Maven回购与默认回购相似(但不同)。

我正在使用Maven 3.3.1。

1 个答案:

答案 0 :(得分:1)

在org.springframework.cloud.contract.stubrunner.AetherFactories中,我们清楚地看到它获得了这样的本地存储库位置:

private static final String MAVEN_LOCAL_REPOSITORY_LOCATION = "maven.repo.local";

private static String localRepositoryDirectory() {
    return System.getProperty(MAVEN_LOCAL_REPOSITORY_LOCATION, System.getProperty("user.home") + "/.m2/repository");
}

因此,如果您使用以下内容覆盖Maven settings.xml中的本地Maven仓库位置:

<localRepository>C:/HOMEWARE/maven_local_repo</localRepository>

您的制作人将在此位置安装存根,但消费者将查找本地存储的默认位置,除非您通过&#34; maven.repo.local&#34;定义自己的位置。系统属性

你可以在消费者一方使用surefire这样做:

<build>
    ...
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <systemPropertyVariables>
                    <maven.repo.local>${settings.localRepository}</maven.repo.local>
                </systemPropertyVariables>
            </configuration>
        </plugin>
    </plugins>
</build>