首页 > 解决方案 > gradle - 将源 jar 文件附加到依赖项

问题描述

我有一个项目,它既具有 Maven 依赖关系,又依赖于存储在我们公司的 ivy 存储库中的公司内部 jar 文件。它是通过 ivy ant 任务发布的。我们称这个文件为 myco.jar。有一个名为 myco-sources.jar 的源文件,它与 myco.jar 位于同一位置。

当我通过 Eclipse 使用 gradle 构建时,maven 依赖项会自动下载源 jar 文件并将其附加到生成的 .classpath 文件中的主 jar 中。但是对于 myco.jar,它不会自动将 myco-sources.jar 附加到它。相反,myco-sources.jar 被下载,就好像它是一个单独的依赖项一样。所以即使源代码在技术上是类路径的一部分,我仍然无法在调试时单步执行源代码!

这是我的依赖项的片段:

dependencies {
   implementation "com.myco:modname:${versionNo}"
   implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:${jacksonVersion}"
...
}

我如何“告诉” gradle 源文件不是单独的依赖项,而是 myco.jar 文件的源文件?

这是用于发布 myco.jar 和 myco-sources.jar 文件的 ivy.xml 文件的样子:

<publications>
  <artifact name="myco" type="jar" ext="jar"/>
  <artifact name="myco" e:classifier="sources" type="source" ext="jar"/>
<dependencies>
  <dependency ... />
  ...
</dependencies>

这是 CI 运行以发布到我们的工件存储库的 ant 任务:

<target name="publish-task" depends="xxx" description="xxx">
   <ivy:resolve file="ivy.xml"/>
   <ivy:publish pubrevision="${version}" status="integration" resolver="xxx" overwrite="true">
      <artifacts pattern="${path}/[artifact]-[revision](-[classifier]).[ext]"/>
   </ivy:publish>
   <delete file="ivy-${version}.xml"/>
</target>

标签: javaeclipsegradleivy

解决方案


推荐阅读