文档章节

将标准的EclipseWTP项目转化成具有Gradle功能的EclipseWTP项目

markdrord
 markdrord
发布于 2015/03/02 18:11
字数 670
阅读 48
收藏 0

标准的EclipseWTP项目的目录结构是:

  • src:存放源代码文件,包括Java和资源(非Java文件,例如:xml、properties等)文件

  • WebContent:存放web文件

Gradle的Web项目的目录结构是:

  • src/main/java:存放源代码的Java文件

  • src/main/resources:存放源代码的资源文件

  • src/main/webapp:存放web文件

因为这两种项目结构存在差异,所以如果想为标准EclipseWTP项目添加Gradle功能必须修改目录结构。如果勤快一点可以通过操作Eclipse拖拖拽拽完成,或者通过Gradle的自定义task来完成,当然本文说的是第二种方式。

Gradle的一个非常灵活的功能是,运行在脚本中使用Groovy代码,甚至定义class也可以,所以我们定义两个class,分别代表上面的两种项目结构:

标准的EclipseWTP项目(EclipseWtpProject.groovy)

package com.bstek.gradle;

class EclipseWtpProject {
	def rootDirName;
	def rootDir;
	def srcDirName;
	def srcDir;
	def webDirName;
	def webDir;
	def project;

	EclipseWtpProject(def project, rootDirName = 'oldSrc', srcDirName = 'src', webDirName = 'WebContent') {
		this.project = project;
		this.rootDirName = rootDirName
		rootDir = project.file(rootDirName);
		this.srcDirName = srcDirName
		srcDir = project.file(rootDirName + '/' + srcDirName)
		this.webDirName = webDirName
		webDir = project.file(rootDirName + '/' + webDirName)
	}

	def check() {
		def dirs = [srcDir, webDir];
		dirs.each { dir ->
			if (!dir.exists()) {
				throw new FileNotFoundException(dir.toString());
			}
		}
	}

}

Gradle的Web项目(GradleWtpProject.groovy)

package com.bstek.gradle;

class GradleWtpProject {
	def javaDir
	def resourceDir
	def webappDir
	def project

	def GradleWtpProject(def project) {
		this.project = project;

		javaDir = project.file('src/main/java')
		resourceDir = project.file('src/main/resources')
		webappDir = project.file('src/main/webapp')
	}

	def create() {
		def fs = [javaDir, resourceDir, webappDir]
		fs.each { f ->
			if (!f.exists()) {
				f.mkdirs();
			}
		}
	}

	def delete() {
		def fs = [javaDir, resourceDir, webappDir]
		fs.each { f ->
			if (f.exists()) {
				f.delete();
			}
		}
	}

	def recreate() {
		delete();
		create();
	}
}

将上面的两个文件存放在buildSrc/src/main/groovy目录下,当然必须遵守package的目录结构。

接下来build.gradle的代码就很简单了,

build.gradle

import com.bstek.gradle.*;

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'eclipse-wtp'

buildDir = file('gradle-build')

now = new Date()
version = now.format('yyMMddHHmm')

task createGradleWebProject(dependsOn: 'eclipse') {
	description = 'Convert a eclipse-wtp projeto to a eclipse-wtp with gradle support.' 

	wtpProject = new GradleWtpProject(project);
	wtpProject.recreate();

	def oldProject = new EclipseWtpProject(project)
	oldProject.check();

	//Copy Java
	project.copy {
		into(wtpProject.javaDir)
		from oldProject.srcDir
		include '**/*.java'
	}

	//Copy Resources
	project.copy {
		into wtpProject.resourceDir
		from oldProject.srcDir
		exclude '**/*.java'
		exclude '**/.svn/**'
	}

	//Copy Webapp
	project.copy {
		into wtpProject.webappDir
		from oldProject.webDir
		exclude ('**/.svn/**', 'WEB-INF/classes/**', 'WEB-INF/lib/**')
	}
}

 

使用方法:

  1. 在gradle项目下创建oldSrc目录

  2. 将EclipseWTP项目文件复制到oldSrc中

  3. 在控制台中执行:gradle createGradleWebProject

  4. oldSrc目录已经完成了使命,可以删除了(当然谨慎的你可能不会立即这么做)

使用效果:

  1. 生成src/main/java目录,并且已经包含所有的java代码

  2. 生成src/main/resources目录,并且已经包含所有的资源文件

  3. 生成src/main/webapp目录,并且已经包含全部的web文件

  4. 生成.project文件

  5. 生成.classpath文件

  6. 生成.setting文件夹,包含org.eclipse.jdt.core.prefs、org.eclipse.wst.common.component、org.eclipse.wst.common.project.facet.core.xml文件

  7. 通过Eclipse的Import Existing Projects into Workspace功能将新的项目添加到Eclipse中进行开发


© 著作权归作者所有

共有 人打赏支持
markdrord
粉丝 1
博文 7
码字总数 2329
作品 0
浦东
技术主管
gradle/maven/eclipse工程相互转化

gradle/maven/eclipse工程相互转化 IT驿站2015-06-29789 阅读 Androidgradle gradle/maven/eclipse工程相互转化: 前提安装好相应的工具和插件。 1、Maven->eclipse mvn eclipse:eclipse 2、...

IT驿站
2015/06/29
0
0
Gradle之介绍

Gradle是基于JVM构建工具的新一代版本。它从现有的构建工具如Ant和Maven中学到了很多东西,并且把它们的最优思想提升到更高层次。遵循基于约定的构建方式,Gradle可以用一种声明式的方式为你...

柳哥
2015/10/10
69
0
gradle中如何实现maven的bom功能

gradle中如何实现maven的bom功能 四号程序员2017-12-084 阅读 J2EEJava 在maven里有 bom (bill of materials) 的功能,可以解决同一项目,不同版本依赖的问题。 gradle虽然是“下一代maven”...

四号程序员
2017/12/08
0
0
CAS Server 下载、部署、测试 与 Tomcat 7.0 开启 Https

这篇文章只介绍如何下载、部署、测试,概念将在单独篇章进行讲解。 值得注意的是cas server 没有现成的应用部署包,是需要我们自己去打包成war后,手动进行发布,有两种打包方式,第一种是通...

华山猛男
03/12
1
0
构建Gradle范例项目之构建Java项目

Gradle插件通过引入特定领域的约定和任务来构建你的项目。Java插件是Gradle自身装载的一个插件。Java插件提供的基本功能远比源代码编译和打包多。它为你的项目建立了一个标准的项目布局,并确...

柳哥
2015/10/21
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

(一)软件测试专题——之Linux常用命令篇01

本文永久更新地址:https://my.oschina.net/bysu/blog/1931063 【若要到岸,请摇船:开源中国 不最醉不龟归】 Linux的历史之类的很多书籍都习惯把它的今生来世,祖宗十八代都扒出来,美其名曰...

不最醉不龟归
25分钟前
6
0
蚂蚁金服Java开发三面

8月20号晚上8点进行了蚂蚁金服Java开发岗的第三面,下面开始: 自我介绍(要求从实践过程以及技术背景角度着重介绍) 实习经历,说说你在公司实习所做的事情,学到了什么 关于你们的交易平台...

edwardGe
32分钟前
7
0
TypeScript基础入门 - 函数 - this(三)

转载 TypeScript基础入门 - 函数 - this(三) 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.2.4 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能...

durban
42分钟前
0
0
Spark core基础

Spark RDD的五大特性 RDD是由一系列的Partition组成的,如果Spark计算的数据是在HDFS上那么partition个数是与block数一致(大多数情况) RDD是有一系列的依赖关系,有利于Spark计算的容错 RDD中每...

张泽立
50分钟前
0
0
如何搭建Keepalived+Nginx+Tomcat高可用负载均衡架构

一.概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最简单的部署方式,但是随着业务的不断扩大,系统的访问量逐渐的上升,单机部署的模式已...

Java大蜗牛
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部