我有一个依赖于maven包的代码,我不希望这个依赖被打包到一个最终的JAR中,实际上,我希望在最终的包中只有源代码,没有所有的依赖(这样做的原因是所有的依赖在类路径中已经可用)。
在rules_jvm_external中,有一个neverlink
选项将依赖项标记为仅编译。
maven_install(
artifacts = [
maven.artifact("org.example.package", "my-dependency", "1.0.0", neverlink=True),
],
...
)
这是可行的,但问题是测试使用相同的WORKSPACE文件定义,并且由于依赖关系在运行时不可用,因此它们会以java.lang.NoClassDefFoundError
失败。
所以我想做到这两点:
- 使依赖项在测试中可用
- 不要在部署的JAR中包含依赖关系
我该怎么做?
1条答案
按热度按时间0s7z1bwu1#
rules_jvm_external
允许指定几个maven_install
声明来处理具有同一工件的不同版本的多个项目:链接。我不确定这是否是正确的方法,因为我没有不同的版本-我有不同的元数据为同一个包代替-但它的工作。
在我的WORKSPACE文件中,我执行了以下操作:
在
BUILD
文件中为java/源代码:而在
BUILD
文件中的javatests/: