我正在努力做一些事情。我已经定义了一个Web应用程序Gradle项目,我想构建这个项目的多个版本,其中每个版本都使用不同版本的特定依赖项。另外,我想以这样的方式设计它,即这些版本可能来自某些动态源(例如用户输入)而不是文件中的硬编码。
例如,我想编写一个Spring MVC应用程序,并针对许多不同的org.springframework构建此应用程序:spring-webmvc:4.3。*版本。目的是系统是为流行的Web框架构建测试应用程序,我可以使用它来测试与工具的兼容性。
我实际上想用Gradle实现以下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"
}
答案 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'