我正在为一个软件实现Gradle构建系统,该软件的某些部分是在没有Internet连接或无法安装Maven/Ivy服务器(如Nexus)的区域开发的。为了支持这些环境中的开发,我正在组装一个Gradle插件,它允许生成一个“离线工作区”。
我最初实现此功能的方式是触发项目中每个配置的解析(触发所有依赖项的下载),然后遍历每个配置的整个依赖项树,并将依赖项的本地缓存副本复制到脱机工作区中。(为每个复制操作生成一个复制任务。)然后将使用flatDir存储库引用这些JAR。
此实现使用afterEvaluate块执行其任务。虽然这在Gradle2.0中运行良好,但它在Gradle2.2.1中触发了一个弃用警告,因为触发解析在某种程度上被视为在配置已经解析后修改它(Attempting to change configuration ':core:runtime' after it has been included in dependency resolution. This behaviour has been deprecated and is scheduled to be removed in Gradle 3.0)。总而言之,这种方法感觉相当粗糙,因为它还需要我修改build.gradle文件以显式地列出所有可传递的依赖项,因为没有可用的POM文件来正确地指定依赖项。
一种更优雅的方法似乎是构建一个包含所有依赖项(包括POM文件、源JARs、javadoc JARs等)的本地Maven库,然后只使用mavenLocal()库类型。不幸的是,在不需要触发工件解析来执行此操作的情况下,我不确定如何正确执行此操作。
除了压缩整个$USER_HOME/.gradle目录之外,还有什么更好的方法可以将完整的工件下载到易于打包的方式中吗?
https://stackoverflow.com/questions/28436473
复制相似问题