使用不同的依赖项版本重复gradle构建

时间:2018-06-01 21:28:55

标签: gradle build.gradle

我正在努力做一些事情。我已经定义了一个Web应用程序Gradle项目,我想构建这个项目的多个版本,其中每个版本都使用不同版本的特定依赖项。另外,我想以这样的方式设计它,即这些版本可能来自某些动态源(例如用户输入)而不是文件中的硬编码。

例如,我想编写一个Spring MVC应用程序,并针对许多不同的org.springframework构建此应用程序:spring-webmvc:4.3。*版本。目的是系统是为流行的Web框架构建测试应用程序,我可以使用它来测试与工具的兼容性。

我实际上想用G​​radle实现以下bash正在做什么

for version in 4.3.12 4.3.13 4.3.14; do
    ./gradlew war -PspringVersion=$version
done

build.gradle在定义依赖项时使用springVersion

dependencies {
compile "org.springframework:spring-aop:${springVersion}",
        "org.springframework:spring-context:${springVersion}",
        "org.springframework:spring-beans:${springVersion}",
        "org.springframework:spring-context-support:${springVersion}",
        "org.springframework:spring-core:${springVersion}",
        "org.springframework:spring-expression:${springVersion}",
        "org.springframework:spring-web:${springVersion}",
        "org.springframework:spring-webmvc:${springVersion}",
        "javax.servlet:jstl:1.2",
        "javax.servlet:javax.servlet-api:3.1.0"
}

1 个答案:

答案 0 :(得分:0)

我已经找到了一个解决方案,即在settings.gradle中动态构建子项目 - 示例项目https://github.com/gilday/how-to-gradle-project-variations

使用settings.gradle为每个子项动态生成子项目 我们想要构建的Web应用程序的变体。

| how-to-gradle-project-variations
├── app
├── build.gradle
├── settings.gradle
└── variations

“app”目录包含Web应用程序项目

app/
└── src
    └── main
        └── java
            └── com
                └── johnathangilday
                    └── HelloWorldServlet.java

settings.gradle为每个变体生成一个子项目 我们想要构建这个项目的servlet-api依赖

// define versions of javax.servlet:servlet-api for which to generate 
variations of the app
def variations = ['2.3', '2.4', '2.5']

def projects = variations.collect { "${rootProject.name}-${it}" }

// include the app subproject with the servlet definitions include('app')
// include a subproject for each variation of the servlet-api
include(*projects)

/.gradlew projects向我们展示了生成的动态子项目 “变种”目录

$ ./gradlew projects

> Task :projects

------------------------------------------------------------
Root project
------------------------------------------------------------

Root project 'how-to-gradle-project-variations'
+--- Project ':app'
+--- Project ':how-to-gradle-project-variations-2.3'
+--- Project ':how-to-gradle-project-variations-2.4'
\--- Project ':how-to-gradle-project-variations-2.5'