我有一个任务,它从这些源(比如 project a
)生成 java 源和一组 jar。我想将这些 jar 导出到依赖项目(例如 project b
)。所以这大致是我现在所拥有的:
//a.gradle
configurations{
generatedJars
}
task generateJars(type: JavaExec) {
//generate jars ...
outputs.files += //append generated jars here
}
dependencies{
generatedJars generateJars.outputs.files
}
//b.gradle
dependencies{
project(path: ':a', configuration: 'generatedJars')
}
它工作正常,除了添加generateJars.outputs.files
为依赖项不会告诉 gradlegenerateJars
在还没有生成 jars 时它必须运行任务。我尝试将任务本身添加为依赖项,希望它的工作方式与将 jar/zip 任务添加到工件配置(例如artifacts{ myJarTask }
)时的工作方式相同,但它会抛出一个错误,告诉我我不能这样做. 当然,我可以在开始评估generateJars
之前在构建过程中的某个地方注入任务:b
,但这既笨拙又脆弱,所以我想避免它。
我觉得我应该将生成的 jar 添加到artifacts{ ... }
项目中,但我不确定如何使它们对依赖项目可见。有没有更好的方法来实现这一目标?
依赖项目 (project b
) 需要设置 IntelliJ IDEA 模块类路径以指向 projecta
生成的 jars。有点像这样(伪代码):
//b.gradle
idea{
module{
scopes.COMPILE.plus += project(path: ':a', configuration: 'generatedJars').files
}
}
到目前为止,我已经尝试简单地在:a
's generatedJars
in上添加一个项目依赖项:b
,但 Idea 插件只是将模块添加:a
为模块依赖项并假设它导出其生成的 jars(这可能是一个正确的假设),因此不将生成的 jars 添加到:b
的类路径。
任何帮助将不胜感激!