在我们公司,许多不同的项目使用类似的技术堆栈,并将具有许多共同的功能。 因此,我们希望在一个公共文件中维护公共功能,依赖项等,并在其他项目中引用它。 在maven中,它类似于使用公共依赖项信息创建单独的maven项目,并在其他项目中将其引用为。
我想做一些类似于gradle中的maven父项目的东西,可以被所有不同的项目使用。 我用Google搜索,但无法找到有关如何做到这一点的简明信息。 我们不允许使用外部第三方插件。
如果有人能解释如何做到这一点会很棒。
答案 0 :(得分:1)
buildscript {
repositories { jcenter() }
dependencies {
classpath 'com.netflix.nebula:nebula-dependency-recommender:4.3.0'
}
}
allprojects {
apply plugin: 'nebula.dependency-recommender'
apply plugin: 'groovy'
apply plugin: 'java'
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenCentral()
jcenter()
maven { url "http://repo1.maven.org/maven2/" }
maven { url "REPOSITORY_OF_YOUR_PARENT_POM.XML" }
}
dependencyRecommendations {
mavenBom module: 'YOUR_PARENT_POM_GROUP:YOUR_PARENT_POM_ID:YOUR_PARENT_POM_VERSION'
}
}
其中:
REPOSITORY_OF_YOUR_PARENT_POM.XML - 任何系统,如nexus或其他可供maven访问的系统
YOUR_PARENT_POM_GROUP - 您的父pom项目组(例如com.foo.bar.parent)
YOUR_PARENT_POM_ID - 您的父pom id(例如projects-parent)
YOUR_PARENT_POM_VERSION - 您的父pom项目版本(例如1.0.1)
所以,如果对netflix.nebula的外部依赖是好的,那么你可以这样做
答案 1 :(得分:0)
Gradle有许多扩展机制,可以利用位于主脚本之外的构建逻辑。
可以做的一件简单事情是使用外部构建脚本,该脚本可以从本地文件系统或URL获取,请参阅documentation on this topic。
如果该解决方案存在问题,那么您可以转而打包其他人可以应用并可能配置的真实插件。
这将允许您配置比依赖项更多的内容。