java – 依赖于同一Gradle依赖项目的main和test代码
我至少维护了2个
Java Gradle项目.假设我有一个名为A的公共项目和另一个依赖于A的项目B.在许多其他项目中,A在技术上是常见的,但这不是我问题的细节.无论如何,目前的情况是B在其build.gradle文件中声明对A的依赖是一个普通的外部依赖,如下所示:
compile group:'com.example',name: 'A',version: '0.1' 我们有一个特定于A中测试的代码,我们通过将它放在src / main / java中与B共享.此代码必须保留在A而不是B中,因为还有其他项目取决于使用此测试代码的A.我想避免将代码放在这个目录中,因为它没有专门用于生产的目的,因为它只具有测试性质.此外,简单地将代码从A移动到B是不可能的,因为我组织中的其他项目依赖于相同的代码,我希望避免代码重复.我宁愿将A中的测试代码移动到src / test / java,但是它不会发布到A的JAR文件中. 因此,我试图寻求一种解决方案,其中此代码位于A中的src / test / java中,并部署在仅测试的JAR文件中.有些帖子讨论了可能的解决方案,例如this blog post或SOF帖子,如Multi-project test dependencies with gradle和Multi-project test dependencies with gradle.但是,我不断遇到一个问题,因为我没有维护多项目Gradle构建,而是两个完全独立的单个-project Gradle构建,这不能改变. 我现在所处的位置是我正在以博客文章中建议的确切方式为A配置build.gradle,如下所示: configurations { testOutput.extendsFrom testCompile } task jarTest (type: Jar,dependsOn: testClasses) { from sourceSets.test.output classifier = 'test' } artifacts { testOutput jarTest } 然后我在A的build.gradle中声明为编译和testCompile依赖项: compile(group: 'com.example',version: '0.1') testCompile(group: 'com.example',version: '0.1',configuration: 'testOutput') 这不起作用.我没有在B的测试类路径中看到任何testCompile依赖项;这些testCompile依赖项不是由gradle依赖项报告的,也不是由我的IDE代码搜索(IntelliJ)识别的.我抛出了一个Hail Mary,甚至尝试用分类器替换配置:’testOutput’:’test’,但无济于事. Gradle文档似乎也没有帮助,因为我的用例似乎并未真正涵盖在他们的预期用例中. 我可以用任何方式实现我想要的Gradle用法,或者我在A的主JAR文件中导出仅测试代码?所有人都非常感谢. 解决方法
我会将测试期间仅需要的代码与仅在测试期间使用的库完全相同(例如JUnit或Mockito):代码应该位于具有自己名称的单独模块中.
所以我建议你将A分成两个模块(相同的多项目构建): > A. A的依赖关系必须改为: dependencies { testCompile project(':A-test-support') } 在B中,您必须使用这些依赖项: dependencies { compile(group: 'com.example',version: '0.1') testCompile(group: 'com.example',name: 'A-test-support',version: '0.1') } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |