【问题标题】:Maven system scope for testing purposes用于测试目的的 Maven 系统范围
【发布时间】:2015-09-09 00:21:03
【问题描述】:

我编写了一个用于测试微服务的小框架。现在我将我的合约打包到一个 jar 中,用于测试我的框架,但我不想将它们部署到我们的关系中。所以我的 pom 包含

<dependency>
    <groupId>mycompany.testframework</groupId>
    <artifactId>test.dummy-contract</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/test/resources/contract-dummy.jar</systemPath>
</dependency>

现在,如果我想在另一个项目中使用该框架(使用 gradle),我会收到以下错误消息:

Processing of C:\Users\dam\.gradle\caches\modules-2\files-2.1\mycompany.testframework\TestFramework\0.0.1-SNAPSHOT\5859a002118d47b4237425d25dfc79ea1d7eb829\TestFramework-0.0.1-SNAPSHOT.pom failed:
'dependencies.dependency.systemPath' for mycompany:test.dummy-contract:jar must specify an absolute path but is ${project.basedir}/src/test/resources/contract-dummy.jar in mycompany.testframework:TestFramework:0.0.1-SNAPSHOT

我的 jenkins 测试和构建需要依赖项,但“交付”不需要。有什么建议吗?

【问题讨论】:

    标签: java maven jenkins gradle


    【解决方案1】:

    我通过将依赖项添加到仅用于测试框架和詹金斯的配置文件来解决它

    <profiles>
        <profile>
            <id>test-dummy</id>
            <activation>
                <file>
                    <exists>${project.basedir}/src/test/resources/contract-dummy.jar</exists>
                </file>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>de.company.testframework</groupId>
                    <artifactId>test.dummy-contract</artifactId>
                    <version>1.0</version>
                    <scope>system</scope>
                    <systemPath>${project.basedir}/src/test/resources/contract-dummy.jar</systemPath>
    
                    <optional>true</optional>
                </dependency>
            </dependencies>
        </profile>
    </profiles>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-12
      • 2016-11-12
      • 2012-05-17
      • 1970-01-01
      相关资源
      最近更新 更多