当前位置: 首页 > news >正文

转化古老的Eclipse项目为使用gradle构建

很多古老的Java项目,是使用Eclipse作为IDE开发的。

那么,使用其它IDE的开发者,如何快速地进入这种古老项目的开发呢?或者说,一个Eclipse构建的古老项目,能不能转化成一个IDE无关的项目,进而所有IDE用户都可以参与开发呢?

现在我们就尝试,把一个Eclipse的老项目,转化成一个gradle新项目。

Eclipse的配置

Eclipse的配置文件,主要是两个,一个.project,一个是.classpath。

其中,.project是项目的核心配置,.classpath是项目的依赖包。

所以,我们可以简单地先建立一个build.gradle,来替换.project。

下面先通过gradle.properties来确定gradle的执行参数。

gradle的配置

gradle可以通过系统安装,也可以通过IDE来安装。

gradle运行时的参数信息,配置在gradle.properties文件;构建时的配置信息,亦即项目文件,配置在build.gradle文件。

下面一一进行配置。

gradle.properties gradle执行参数

org.gradle.java.home=/usr/java/jdk1.8.0_101  
org.gradle.jvmargs=-Xmx4096m  
org.gradle.daemon=false  
org.gradle.parallel=true

其中,org.gradle.java.home是Java的目录,我这里使用的是Linux上的Java 8,所以是/usr/java/jdk1.8.0_101。

而org.gradle.daemon是用来选定daemon模式。

settings.gradle

然后,通过settings.gradle,定义项目的名称。这样等构建包的时候,最后就会以这个名字命名。

rootProject.name = hello

最后,是build.gradle这个文件。

build.graadle引入插件

buildscript {  apply plugin: 'java'  apply plugin: 'war'  apply plugin: 'eclipse-wtp'  
}

其中:

  • java 用于管理Java项目的构建。
  • war 用户把项目打包成一个war来部署。
  • eclipse-wtp 用来通过gradle来生成Eclipse配置文件

以上的eclipse-wtp是可选的。如果项目不再使用Eclipse维护,或者仍使用原来的.project、.classpath等Eclipse配置文件,可以不使用这个插件。

使用这个插件,可以把项目构建统一起来。即,项目的构建代码,只有build.gradle,Eclipse的构建是gradle的一种输出。

build.gradle配置项目以及Java版本

group = 'com.test'  
version = '1.0' sourceCompatibility = 1.8  
targetCompatibility = 1.8assert org.gradle.api.JavaVersion.current().isJava8Compatible()

上面几行脚本,定义了项目的版本,以及使用的Java的版本。其中使用assert来确保了gradle执行的时候,也要使用Java 8。

定义仓库

repositories {  mavenCentral()  flatDir {  dirs 'WebRoot/WEB-INF/lib'  }
}

很多老的Java项目,直接把Jar放入了WebRoot/WEB-INF/lib中,这里也支持了这种jar的寻找。

定义jar依赖

接下来,就可以按照.classpath,把使用的jar依赖加入build.gradle。

dependencies {  implementation 'javax.servlet:javax.servlet-api:4.0.1'  ……implementation (files 'WebRoot/WEB-INF/lib/syslog4j-0.9.46-bin.jar')

上面使用了两种jar。

第一种是从前面定义的库里下载。第二种是直接指定了文件路径,可以解决需要的库名+版本与文件名不一致的问题。

设置文件编码

// 设置编码  
tasks.withType(JavaCompile) {  options.encoding = 'GB18030'  
}

因为很多Windows开发者,没有把源代码的编码设置为UTF-8,而是使用了GB18030,即Windows系统的编码。所以,这里重新指定了Java编译的时候,使用的编码,可以避免字符集造成的编译错误。

设置jar重复策略

war {  duplicatesStrategy = DuplicatesStrategy.EXCLUDE  
}

同样,一些老旧的项目,不同的Java库可能有重复,在最终生成war的时候会出错,这里通过排除策略进行避免。

设置源代码以及资源目录

sourceSets {  main {  java {  srcDirs = ['src']  }  resources {  srcDirs = ['WebRoot']  }  }  
}  

设置输出目录

buildDir = 'output'

git配置忽略

使用gradle构建的项目,只依赖build.gradle,其它很多文件都可以动态生成。所以,如果源代码版本使用git管理,可以在.girignore中忽略这些临时文件。

*/.gradle  
*/gradle  
*/gradlew  
*/gradlew.bat
*/output

其中,前面都是gradle的临时文件,最后一项是构建过程以及最终的输出文件,这些都可以忽略,不进入版本管理。

转换完成

如此,就可以在项目中通过gradle进行构建了,还可以通过gradle eclipse-wpt再次生成Eclipse的配置文件。

原有的.project、.classpath以及Ecipse的.settings、.my*等临时文件,都可以清理掉了。

http://www.lryc.cn/news/482381.html

相关文章:

  • openGauss常见问题与故障处理(二)
  • Mysql 8迁移到达梦DM8遇到的报错
  • Android HandlerThread 基础
  • 【智能算法应用】人工水母搜索算法求解二维路径规划问题
  • 【Altium】原理图如何利用参数管理器批量修改元器件属性
  • 基于Spring Boot与Redis的令牌主动失效机制实现
  • 深度学习之循环神经网络(RNN)
  • Autosar CP Network Management模块规范导读
  • Xshell 7 偏好设置
  • 云计算答案
  • 浅谈现货白银与白银td的价格差异
  • 【QT常用技术讲解】任务栏图标+socket网络服务+开机自启动
  • 【计算机基础——数据结构——AVL平衡二叉树】
  • 体育活动赛事报名马拉松微信小程序开发
  • 【C++】C++基础知识
  • 中间件安全
  • Zabbix中文监控指标数据乱码
  • 【AI】AI如何赋能软件开发流程
  • 恒创科技:什么是 RAID 3 ? RAID 3、4 和5之间有什么区别?
  • python获取iOS最近业务日志的两种方法
  • 【如何获取股票数据43】Python、Java等多种主流语言实例演示获取股票行情api接口之沪深指数历史交易数据获取实例演示及接口API说明文档
  • ESLint 使用教程(一):从零配置 ESLint
  • openssl对称加密代码讲解实战
  • web前端动画按钮(附源代码)
  • go函数传值是值传递?还是引用传递?slice案例加图解
  • PostgreSQL数据库笔记
  • 财务软件源码SaaS云财务
  • Elasticsearch集群和Kibana部署流程
  • 丹摩征文活动 | 丹摩智算:大数据治理的智慧引擎与实践探索
  • 【Django】Clickjacking点击劫持攻击实现和防御措施