文档章节

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

markdrord
 markdrord
发布于 2015/03/02 18:11
字数 670
阅读 50
收藏 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目...

刘望舒
2018/08/21
0
0
gradle中如何实现maven的bom功能

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

四号程序员
2017/12/08
0
0
《Kotin 极简教程》第12章 使用 Kotlin 集成Gradle 开发

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

程序员诗人
2017/07/19
0
0
Gradle之介绍

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

柳哥
2015/10/10
69
0

没有更多内容

加载失败,请刷新页面

加载更多

MIT 6.828 main.c文件分析

#include <inc/x86.h>#include <inc/elf.h> /*这是一个简单粗略的boot loader,它唯一的工作就是从硬盘的第一个扇区启动格式为ELF的内核镜像硬盘布局这个程序(包括boot.S和mai...

FeanLau
3分钟前
0
0
SpringBoot 整合 Redis

1. pom.xml 文件中添加 Redis 依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><exclusions><exclusio......

北漂的我
11分钟前
0
0
TechDay实录 | 认识PaddlePaddle:更低使用成本、更高开发效率的深度学习框架

导读: 在人工智能时代,各行各业都在尝试利用机器学习/深度学习等前沿技术来解决自身的业务需求,深度学习框架也应运而生。为了继续帮助AI开发者们在深度学习的道路上快速升级,百度PaddleP...

PaddleWeekly
12分钟前
3
0
JAVA AES加解密服务

package com.pasenger.aes;import lombok.Data;import org.apache.commons.codec.binary.Base64;import org.springframework.beans.factory.InitializingBean;import org.springframewo......

Pasenger
23分钟前
0
0
SpringCloud集成 Mybatis分表插件shardbatis 踩坑日志及其原理分析

公司新开发的系统数据量过大,需要进行分表处理,我在网上浏览一圈,选中了Shardbatis,原因有二: 1.公司项目本身集成了Mybatis,而Shardbatis是其插件,引入方便; 2.Sharbatis十分轻便,只...

L墨龙
30分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部