`
sarin
  • 浏览: 1749255 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
E3b14d1f-4cc5-37dd-b820-b6af951740bc
Spring数据库访问系列...
浏览量:172921
C2083dc5-6474-39e2-993e-263652d27795
Android学习笔记
浏览量:366753
5f40a095-b33c-3e8e-8891-606fcf3b8d27
iBatis开发详解
浏览量:188432
B272a31d-e7bd-3eff-8cc4-c0624ee75fee
Objective-C学习...
浏览量:98901
社区版块
存档分类
最新评论

Java集成开发环境的一种配置方案

阅读更多
    先说说Tomcat应用的发布细节,这当然也是大家都比较明白的问题了。
    Tomcat是如何发现我们应用的,有三种方式!第一:你在webapps目录下新建一个发布目录,再把项目webapp文件夹下的内容全部拷贝过去,发布完毕;第二:你把webapp文件夹的在文件系统上的路径复制好,然后在tomcat\conf\Catalina\localhost下新建一个XML配置文件,文件命名最好和项目一致,方便查找嘛。内容如下:
<Context docBase="F:/MyDev/workspace/OA/webapp" path="/oa" reloadable="true">
</Context>

    Context是应用上下文,docBase是项目路径,path是在服务器上的访问地址,这里就是http://localhost:8080/oa来访问了。reloadable是指类路径下有更新是是否进行热部署,什么是热部署,google一下好吧。
    第三种方法:把上面这段复制到tomcat\conf下的server.xml中,位置是倒数第五行那对host里面即可。
    一般情况用第二种是比较方便的,开发的目录不用动,写个配置文件Tomcat就能找到了。很方便。在下面的集成开发环境中,就是用的是第二种方式
    下面开始讲解一种Java集成开发环境的配置
    大部分的Java开发者使用Eclipse作为IDE,当然这其中也有很大一部分使用MyEclipse,因为它方便,集成了开发所需的一些组件,但是问题是启动速度慢,插件太多占用内存太大。基于以上状况,需要根据个人使用状况来定制一套开发环境,满足够用,最小占用的原则,下面先展示一下我的个人开发环境。

Confbuilder文件夹内装的是和web项目发布有关的内容,后面将详细解释。
Data文件夹内装的是成品开发框架和第三方类库,如Struts,Spring,Hibernate等。
Docs文件夹内装的是API文档,可以随时查阅,平时可收集好。
Eclipse文件夹内就是eclipse了,最新版直接去官方下载即可。也可根据个人喜好决定。
Jdk文件夹内装的就是jdk了,这里单独把jdk拿出来就是这套开发环境不依赖于操作系统本身,如果机器里没有按装jdk也能使用,这套环境绝对是绿色版的。
Tomcat内就是tomcat服务器文件了,去官方直接下载拷贝过来就行,不用安装版本的。
Workspace是eclipse的工作区,在eclipse工作区选择填入 ../ 可在这个路径下使用。
Buildconf.bat是项目发布程序。
Eclipse.bat是eclipse启动程序。
Tomcat.bat是tomcat服务器启动程序。
Svn.bat是本机SVN服务启动程序,后续将专门介绍本机SVN的安装和设置。
    下面逐一介绍安装环境的配置。
    首先是confbuilder,这里借助了freemarker的模板来生成配置文件。

    这里就可以看出buildconf.bat是执行这个class文件来工作的,template文件夹内装入的是一个模板文件,freemarker根据这个模板来生产所需文件。模板源码如下:
    Template文件夹下的webapp.xml,其实这就是tomcat发布文件的模板,这个文件最后要发布到tomcat\conf\Catalina\localhost下。
<Context docBase="${docBase}" path="${path}" reloadable="true">
</Context>

    发布程序文件源码如下:代码不难理解,其中都是中文提示,这里不做过多解释。
    多说一句:其中的方法我们在web项目中也可以作为freemarker生成静态html页面的方法,是值得学习的。
import freemarker.template.*;
import java.io.*;
import java.util.*;

public class WebConfBuilder {
	private static Configuration freemarker_cfg;
	/**
	 * 读取控制台输入的内容
	 */
	public static String readLine() throws IOException {
		return new BufferedReader(new InputStreamReader(System.in)).readLine();
	}
	public static void writeLine(String text) {
		System.out.println(text);
	}
	public static void writeLine() {
		System.out.println();
	}
	public static void writeText(String text) {
		System.out.print(text);
	}
	/**
	 * 为freemarker提供配置文件模板,用于生成配置文件
	 */
	public static Configuration getFreeMarkerCFG() throws IOException {
		if (freemarker_cfg == null) {
			freemarker_cfg = new Configuration();
			freemarker_cfg.setDirectoryForTemplateLoading(new File("template"));
		}
		return freemarker_cfg;
	}

	/** 主函数 */
	public static void main(String[] args) throws IOException {
		writeLine();
		writeLine("-------------------");
		writeLine("Web应用自动配置系统");
		writeLine("-------------------");
		writeLine();
		writeText("请输入项目名称:");
		String prjName = readLine();
		File f = new File("../workspace/" + prjName);
		if (!(f.exists())) {
			writeLine("对不起,该项目不存在。");
			return;
		}
		writeText("请输入Web目录名称(默认为/webapp,不需改变时请直接回车):");
		String webName = readLine();
		if ("".equals(webName)) {
			webName = "/webapp";
		}
		f = new File("../workspace/" + prjName + webName);
		if (!(f.exists())) {
			writeLine("对不起,输入的Web目录不存在。");
			return;
		}
		writeText("请输入项目的发布名称(最好全部使用小写字母):");
		String deployName = readLine();
		if ("".equals(deployName)) {
			writeLine("对不起,发布名称不能为空。");
			return;
		}
		if (!(deployName.startsWith("/"))) {
			deployName = "/" + deployName;
		}

		Template t = getFreeMarkerCFG().getTemplate("webapp.xml");
		Map root = new HashMap();
		root.put("docBase", f.getCanonicalPath().replaceAll("\\\\", "/"));
		root.put("path", deployName);

		f = new File("../tomcat/conf/Catalina/localhost");
		if (!(f.exists())) {
			writeLine("对不起,配置文件存放路径没找到。");
			return;
		}

		f = new File("../tomcat/conf/Catalina/localhost" + deployName + ".xml");

		Writer out = new BufferedWriter(new OutputStreamWriter(
				new FileOutputStream(f)));
		try {
			t.process(root, out);
		} catch (Exception e) {
			writeLine("对不起,生成错误。");
			return;
		}
		writeLine("文件生成成功。");
	}
}

将这个源文件编译成class文件,然后放到集成文件的相应位置。因为它所依赖freemarker类库,所以freemarker.jar也不可缺少,下面就是写个批处理程序来运行了。其中所定的各种路径是结合我的环境设置的,当然大家可以根据自己的偏好进行。
buildconf.bat脚本如下:
@set JAVA_HOME=%cd%\jdk
@set PATH=%JAVA_HOME%\bin
@cd confbuilder
@java -classpath .;freemarker.jar WebConfBuilder
@pause
可以看到它就是运行了这个配置程序,运行效果如下:

Data,docs和eclipse文件夹就没什么可说的了,直接拷贝过来就行了。剩下的就是积累自己的数据和文档了。下面说下jdk。之所以本身带有jdk就是为了移植性,在任何一台windows机器上都能进行开发,而不需要硬性要求机器必须安装jdk。Jdk可以从一个安装好的目录中拷贝过来,有如下内容即可。

Tomcat去apache下载非安装版即可,tomcat.bat如下:
@set JAVA_HOME=%cd%\jdk
@set PATH=%JAVA_HOME%\bin
@set CATALINA_HOME=%cd%\tomcat
@cd tomcat/bin
@startup.bat
Eclipse.bat如下:
@set JAVA_HOME=%cd%\jdk
@set PATH=%JAVA_HOME%\bin
@cd eclipse
@start eclipse.exe
SVN在Windows下的配置以后再进行总结。
这只是一种整合方式,当然大家也有自己的偏好,也希望有更好方案的使用者来分享经验。同时希望本文希望对使用者有所帮助。


  • 大小: 9 KB
  • 大小: 6.8 KB
  • 大小: 20.2 KB
  • 大小: 7 KB
6
0
分享到:
评论

相关推荐

    java开源包11

    parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...

    java开源包6

    parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...

    java开源包9

    parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    java开源包4

    parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...

    java开源包101

    parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...

    java开源包5

    parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...

    java开源包8

    parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...

    java开源包10

    parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    7.3 tomcat中servlet的另一种运行方式 244 7.4 与servlet配置相关的元素 247 7.4.1 [servlet]元素及其子元素 247 7.4.2 [servlet-mapping]元素及其子元素 249 7.5 一个实例 250 7.6 小结 253 第8章 数据库访问...

    JAVA上百实例源码以及开源项目源代码

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    java开源包3

    parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...

    java开源包1

    parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    7.3 tomcat中servlet的另一种运行方式 244 7.4 与servlet配置相关的元素 247 7.4.1 [servlet]元素及其子元素 247 7.4.2 [servlet-mapping]元素及其子元素 249 7.5 一个实例 250 7.6 小结 253 第8章 数据库访问...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    7.3 tomcat中servlet的另一种运行方式 244 7.4 与servlet配置相关的元素 247 7.4.1 [servlet]元素及其子元素 247 7.4.2 [servlet-mapping]元素及其子元素 249 7.5 一个实例 250 7.6 小结 253 第8章 数据库访问...

    java开源包2

    parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...

    java开源包7

    parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...

    Java资源包01

    parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    7.3 tomcat中servlet的另一种运行方式 244 7.4 与servlet配置相关的元素 247 7.4.1 [servlet]元素及其子元素 247 7.4.2 [servlet-mapping]元素及其子元素 249 7.5 一个实例 250 7.6 小结 253 第8章 数据库访问...

    IBM.Rational.Suite.V2003.06.00.Multilanguage(CD1)

    通过推出 IBM Rational XDE Tester 以及对 IBM Rational XDE Developer的强化,设计和测试工作更加紧密结合,使开发队伍能够在相同的集成开发环境下进行应用程序的建模、开发和测试。这些新产品可以帮助软件开发人员...

Global site tag (gtag.js) - Google Analytics