ant构建项目迁移到gradle,从ant + ivy迁移到gradle

I read many good things about gradle so I get impressed. Many people are enthusiastic how easy is to develop with gradle. They all emphasize the multi-project capabilies of gradle.

I already have a main project with some subprojects. The outside dependencies are defined in all the project's own ivy.xml. And the module interdependencies are defined in both eclipse's .classpath file and ant build.xml parallelly. This way i can build for IDE and can create a runtime with ant. Is there a simple way to migrate the same build structure from eclipse/ant and ivy to gradle (or gradle + ivy)?

The build process is simple:

Resolve the subproject's dependencies from ivy.xml

Build the subproject

(repeat 1 and 2 for all the subprojects)

Resolve the dependencies for main project (both from ivy and eclipse/ant config)

Build main project

Package everything into one jar file

Not rocket science... but it took many days to implement it in ant.

Is that really a simple to migrate that to gradle? If yes, what are the starting points?

I see that there is an eclipse plugin, but I see only the possibility to generate .classpath, not to parse/read it. I see an Ivy XML plugin too. It is not clear for me how to handle dependent projects/modules?

Any help is welcome.

Regards:

Bence

解决方案

If you don't have a lot of custom ant tasks and just need to convert your ivy dependencies, this will create gradle dependencies from your ivy.xml. Paste into an empty build.gradle alongside your ivy.xml and run gradle ivyToGradle. Then copy the output into your build.gradle file. Requires gradle 2.12+ due to use of the compileOnly configuration.

This will not handle all possible ivy.xml settings, you may need to tweak to your particular use of ivy.xml. It handles basics such as runtime configs, test configs, compile-only configs, global exclusions, transitive true/false, and version forcing.

task ivyToGradle {

description "Converts dependencies in ivy.xml to gradle dependencies."

doLast {

def ivyModule = new XmlParser().parse(new File("$projectDir/ivy.xml"))

if (!ivyModule.dependencies.exclude.isEmpty() || !ivyModule.dependencies.override.isEmpty()) {

println "configurations.runtime {"

ivyModule.dependencies.exclude.each {

def excludeStrs = []

if (it.@org != null) {

excludeStrs.add("group: '${it.@org}'")

}

if (it.@module != null) {

excludeStrs.add("module: '${it.@module}'")

}

if (!excludeStrs.isEmpty()) {

def excl = excludeStrs.join(", ")

println " exclude ${excl}"

}

}

def overrides = ivyModule.dependencies.override.findResults {

if ("exact" != it.@matcher) {

return null

}

if (!it.@org || !it.@module || !it.@rev) {

return null

}

return " '${it.@org}:${it.@module}:${it.@rev}'"

}

if (overrides) {

println " resolutionStrategy.force("

println overrides.join(",\n")

println " )"

}

println "}"

println ""

}

println("dependencies {")

ivyModule.dependencies.dependency.each {

def transitive = ("false" != it.@transitive)

def force = ("true" == it.@force)

def scope = "compileOnly" // Requires gradle 2.12 or later

if (it.@conf?.contains("test")) {

scope = "testCompile"

} else if (it.@conf?.contains("runtime")) {

scope = "compile"

}

def hasBlock = !it.exclude.isEmpty() || !transitive || force

if (hasBlock) {

println " $scope('${it.@org}:${it.@name}:${it.@rev}') {"

it.exclude.each {

def excludeStrs = []

if (it.@org != null) {

excludeStrs.add("group: '${it.@org}'")

}

if (it.@module != null) {

excludeStrs.add("module: '${it.@module}'")

}

if (!excludeStrs.isEmpty()) {

def excl = excludeStrs.join(", ")

println " exclude ${excl}"

}

}

if (!transitive) {

println " transitive = false"

}

if (force) {

println " force = true"

}

println " }"

} else {

println " $scope '${it.@org}:${it.@name}:${it.@rev}'"

}

}

println("}")

println ""

}

}

项目是一个基于SSM(Spring+SpringMVC+MyBatis)框架和Vue.js前端技术的大学生第二课堂系统,旨在为大学生提供一个便捷、高效的学习和实践平台。项目包含了完整的数据库设计、后端Java代码实现以及前端Vue.js页面展示,适合计算机相关专业的毕设学生和需要进行项目实战练习的Java学习者。 在功能方面,系统主要实现了以下几个模块:用户管理、课程管理、活动管理、成绩管理和通知公告。用户管理模块支持学生和教师的注册、登录及权限管理;课程管理模块允许教师上传课程资料、设置课程时间,并由学生进行选课;活动管理模块提供了活动发布、报名和签到功能,鼓励学生参与课外实践活动;成绩管理模块则用于记录和查询学生的课程成绩和活动参与情况;通知公告模块则实时发布学校或班级的最新通知和公告。 技术实现上,后端采用SSM框架进行开发,Spring负责业务逻辑层,SpringMVC处理Web请求,MyBatis进行数据库操作,确保了系统的稳定性和扩展性。前端则使用Vue.js框架,结合Axios进行数据请求,实现了前后端分离,提升了用户体验和开发效率。 该项目不仅提供了完整的源代码和相关文档,还包括了详细的数据库设计文档和项目部署指南,为学习和实践提供了便利。对于基础较好的学习者,可以根据自己的需求在此基础上进行功能扩展和优化,进一步提升自己的技术水平和项目实战能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值