首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在不同项目之间共享配置的最佳方式是什么?

在不同项目之间共享配置的最佳方式是什么?
EN

Stack Overflow用户
提问于 2014-01-15 15:57:33
回答 3查看 2.8K关注 0票数 6

我们有3-5个不同的项目。我不想每次将配置的某些部分从一个项目复制/粘贴到另一个项目(比如添加公共maven存储库)。在不同项目之间共享通用配置的最佳方式是什么?

我使用过apply from: "http://path/to/common.build.gradle"构建,但我们的架构师认为这不是最好的解决方案,因为项目构建依赖于存储common.build.gradle的外部服务器。如果您没有连接到此服务器,则无法生成项目。你觉得那个怎么样?

EN

回答 3

Stack Overflow用户

发布于 2014-01-16 10:34:40

在构建之间共享配置的最可靠方法是将其编码为插件类(即实现org.gradle.api.Plugin接口的类),将其作为Jar发布到Maven或常春藤存储库,并使用buildscript块将其拉入到消费构建中。这将确保插件Jar像任何其他工件依赖项一样被缓存。在Gradle User Guide中解释了如何实现这一点。

票数 5
EN

Stack Overflow用户

发布于 2018-05-31 20:55:10

我发现的最简单的方法是:

  1. 将公共文件放在某个位置,这样url就可以访问了。我选择了artifactory OSS来发布我的通用gradle文件。
  2. 使用artifactory

请注意,Gradle会缓存common.gradle,因此当您离线时,可以使用--ofline选项(gradle --ofline build)运行gradle,如果文件在缓存中,则构建仍然有效

有一些some gotchas需要注意。具体来说,你需要在common.gradle中使用旧的插件机制,并使用完全限定的类名(没有任何引号,因为它是一个类引用)。请看下面的要点:

代码语言:javascript
复制
buildscript {
    // Have to use old plugin mechanism if not in build.gradle
    // https://discuss.gradle.org/t/how-do-i-apply-a-plugin-to-a-project-from-a-shared-applied-gradle-file/7508/15
    repositories {
        jcenter()
    }
    dependencies {
        classpath "org.jfrog.buildinfo:build-info-extractor-gradle:latest.release"
        classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.6.2"
        classpath "pl.allegro.tech.build:axion-release-plugin:1.9.1"
    }
}

apply plugin: org.jfrog.gradle.plugin.artifactory.ArtifactoryPlugin
apply plugin: org.sonarqube.gradle.SonarQubePlugin
apply plugin: pl.allegro.tech.build.axion.release.ReleasePlugin

虽然这种方法简单而快速,但它的缺点是您的构建过程没有得到适当的依赖项管理和源代码控制,这使得它不可预测和不确定。

票数 3
EN

Stack Overflow用户

发布于 2022-02-23 15:01:49

另一种选择是编写自定义gradle包装器。请原谅我没有举一个例子,但这里有一个例子:

https://docs.gradle.org/current/userguide/gradle_wrapper.html

我已经经历过了,它似乎工作得足够好。你在它自己的项目中设置它,并在你当前的包装器旁边发布包装器文件,它必须在公共区域,然后每个项目都可以链接到你的新包装器。

也有gochas的语调,iirc必须使用与Farrukh答案中相同的语法。您还可以将此解决方案与上述每个解决方案混合使用。这个解决方案并不常见,但当您有大量项目需要以相同的方式配置时,它是一个很好的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21131906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档