文档章节

将标准的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
Android Gradle(一)为什么现在要用Gradle?

前言 又要开启一个新系列了,这个系列我们来学习Gradle,它是一个基于JVM的新一代构建工具,关于Gradle完全可以写一本书,这个系列会针对Android开发来对Gradle的知识进行精简讲解。Gradle目...

刘望舒
08/21
0
0
《Kotin 极简教程》第12章 使用 Kotlin 集成Gradle 开发

第12章 使用 Kotlin 集成Gradle 开发 《Kotlin极简教程》正式上架: 点击这里 > 去京东商城购买阅读 点击这里 > 去天猫商城购买阅读 非常感谢您亲爱的读者,大家请多支持!!!有任何问题,欢...

程序员诗人
2017/07/19
0
0
gradle中如何实现maven的bom功能

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

四号程序员
2017/12/08
0
0
Gradle之介绍

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

柳哥
2015/10/10
69
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式缓存架构设计

零、 题记 在高并发场景下,需要通过缓存来减少数据库的压力,使得大量的访问进来能够命中缓存,只有少量的需要到数据库层。由于缓存基于内存,可支持的并发量远远大于基于硬盘的数据库。所以...

Ala6
4分钟前
1
0
简单工厂模式

public abstract class Operation { private double numberA = 0; private double numberB = 0; public double getNumberA() { return numberA; } ......

NinjaFrog
6分钟前
0
0
git(一) git基本操作(branch、tag、冲突)

撤销操作 修改最后一次提交 解释:修改上次提交。可以修改内容和提交信息 适用场景: 1) 提交信息写错了; 2) 提交多加了配置文件; 3)提交少加了文件 示例操作: $ git commit -m '提交1'...

开心的哈士奇
9分钟前
0
0
Vue中路由管理器Vue Router使用方式(二)-推荐

一、Vue中使用Vue Router简单方式使用 vue add xxx命令添加插件 使用步骤,本人假设已经安装好了Vue CLI工具,了解更多参考:VSCode 搭建Vue开发环境之Vue CLI 1.创建项目 vue create hello...

tianma3798
21分钟前
0
0
设计模式(十六)[结构模式] 装饰模式(Decorator)

1.什么是装饰模式? 装饰模式又名包装模式。装饰模式以对客户端透明的方式扩展对象功能,是继承关系的一个替代方案。 2.模式的类图 抽象构件(Component)角色:给出一个抽象接口,以规范准备接收...

1527
22分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部