`

为big project虚拟盘,并构造eclipse里的user libraries

    博客分类:
  • java
阅读更多
1、虚拟盘
    如果做java开发的时候,开发环境、产品jar包、产品代码有好几个G,目录也比较多的时候,似乎把整个环境虚拟成一个虚拟盘是个不错的选择。如下,把我一个project虚拟成了X盘(setX.bat):
@echo off
rem 如果存在X盘,则先删除
if exist X: subst /d X:
rem 把E:\workspaces\workspace-java\food虚拟成X盘
subst X: E:\workspaces\workspace-java\food

虚拟成X盘之后,可以像操纵普通的盘区一样操作X盘了。在此刻看来只是简化了访问的路径,不过如果你遇到过因为classpath过长导致的CreateProcess error的时候,如下:
Exception occurred executing command line. 
Cannot run program "D:\Program Files\Java\jdk1.6.0_18\bin\javaw.exe" (in directory "E:\workspace\myproject"): CreateProcess error=87

你会发现,虚拟盘也不失为一种解决问题的办法,比起自己写classloader,简便多了。
2、构造eclipse的userlibraries
    如果在项目或者产品中,发现用到了太多的jar包,甚至可能这些包又被分为了多类,如第三方包、产品平台的包、标准产品业务功能的包、行业产品的包,那么如果通过eclipse里头一个一个的添加jar包,可不是人干的事,动辄几百的jar包,一个个的添加。而另外还可能随着产品的开发,新加入的包,通过手工加入jar包显然不是有效的解决办法。如果有种自动的办法可以生成一个eclipse里的userlibraries,那就不错了。下边就介绍这么一种方法(在进行一下操作之前,请确保ant和perl已经安装并设置了环境变量):
2.1、通过ant把需要处理的jar目录包括进来(build_library.xml):
<?xml version="1.0" encoding="utf8"?>
<!--把X盘lib目录下的所有jar包路径都放进文件my_library.libiaries-->
<project name="build_library" basedir="." default="make_library_file">
	<path id="all_lib">
		<fileset dir="X:/lib/">
			<include name="**/*.jar"/>
		</fileset>
	</path>
	<target name="make_library_file">
		<property name="lib_list" refid="all_lib"/>
		<echo file="my_library.userlibraries">${lib_list}</echo>
	</target>
</project>

此处,我把所有jar包放到了X盘的lib目录,当然,根据你的需要,你可以分成thirdpart、platform、standard、industry等多个target,放入到多个文件中在后边使用。
2.2、通过perl把2.1生成的userlibraries格式化为eclipse中标准的userlibraries(power_tool.pl):
require "my_constants.pm";

#调用ant,构造userlibraries;注意 使用ant命令前必须确认ant已经加入到环境变量
system("call ant -f build_library.xml");
#读取ant写入的jar文件路径,然后关闭文件
unless(open(LIB,$my_constants::LIBRARIES_FILE_NAME)) {
	die "Fail to open to read $my_constants::LIBRARIES_FILE_NAME\n";
}
#读取整个文件
@temp = <LIB>;
close(LIB);
#整合成一个字符串
$content = join("",@temp);
chomp($content);
#根据;号拆分成数组
@liblist = split(";",$content);

#重新写入格式化的library文件
unless(open(FILE,">$my_constants::LIBRARIES_FILE_NAME")){
	die "Fail to open to write $my_constants::LIBRARIES_FILE_NAME\n";
}

print FILE $my_constants::LIB_HEAD;
#写文件头
foreach $line (@liblist) {
	$line =~ s/\\/\//g;
	print FILE $my_constants::ARCHIVE_PATH_PART;
	print FILE $line;
	print FILE $my_constants::ARCHIVE_SRC_PART;
	#正则匹配出盘符、路径名和文件名,在后边设置source的时候会用到
	$line =~ m/(\w):(.*)[\\\/]([\w\d-_\.]+)\.jar/g;
	#设置class默认链接的源代码,当然此处要根据实际情况调整源码目录或者此处的设置
	print FILE "$1:/src$2";
	print FILE $my_constants::SRC_END;
	print FILE $my_constants::ARCHIVE_END;
}
print FILE $my_constants::LIB_END;
close(FILE);

里边用到了perl的package(my_constants.pm),主要是统一管理一些东西,里边主要是一些变量:
#放到package里
package my_constants;

#eclipse里user library的格式
#
#<?xml version="1.0" encoding="ASCII"?>
#<eclipse-userlibraries version="1">
#	<library name="lib_for_me.userlibraries" systemlibrary="false">
#		<archive path="V:/lib/port-client.jar" source="V:/src/port-src.jar"/>
#	</library>
#</eclipse-userlibraries>
#
#

#userlibraries的名称
$LIBRARIES_FILE_NAME = "my_library.userlibraries";

#这里应该是定义多行变量吧
#这里倒数第二行TEMP与行首之间不能有空格。倒数第一行;前边可以有空格,但必须另起一行
$LIB_HEAD = <<TEMP
<?xml version="1.0" encoding="ASCII"?>
<eclipse-userlibraries version="1">
	<library name="$LIBRARIES_FILE_NAME" systemlibrary="false">
TEMP
;
$LIB_END = <<TEMP
	</library>
</eclipse-userlibraries>
TEMP
;
#<archive path="X:/lib/spring-server.jar" source="V:/src/spring-src.jar"/>
$ARCHIVE_PATH_PART = "\t\t<archive path=\"";
$ARCHIVE_SRC_PART = "\" source=\"";
$ARCHIVE_END = "\"/>\n";

$SRC_END = "-src.jar";

2.3、生成userlibraries
通过运行perl命令,我们就可以构造出userlibraries了:
perl power_tool.pl

生成的userlibraries的内容如下:
<?xml version="1.0" encoding="ASCII"?>
<eclipse-userlibraries version="1">
	<library name="my_library.userlibraries" systemlibrary="false">
		<archive path="X:/lib/antlr/antlr-2.7.6.jar" source="X:/src/lib/antlr-src.jar"/>
                ...
                <archive path="X:/lib/toplink/toplink-essentials.jar" source="X:/src/lib/toplink-src.jar"/>
	</library>
</eclipse-userlibraries>

2.4、更进一步的自动化
我们创建clean-build_libraries.bat批处理文件,把perl命令放入其中,我们就不用打开cmd然后敲入perl命令了,直接双击即可:
perl power_tool.pl

自动化构造userlibraries的功能已经完成了!
只需要在eclipse里点着项目右键,Build Path -> Add Libraries... -> User Library -> Next -> User Libraries -> Import -> Browse 选择生成的my_library.userlibraries文件,然后OK -> OK ->选择libraries -> Finish,就把library加入到了自己的project。

注:附件为源码,这个是特定于我的本地开发环境的,如果你要使用,需要修改路径。



分享到:
评论

相关推荐

    向eclipse中添加user library的方式

    5. **确认并保存**:返回“User Libraries”界面,你会看到新添加的库文件已列出。点击“OK”以保存设置。 6. **将User Library添加到项目**:现在你需要将创建的User Library应用到你的项目中。选择你要添加库的...

    如何在eclipse jee中创建Maven project并且转换为Dynamic web project

    在Eclipse JEE环境下,创建一个Maven项目并将其转换为Dynamic Web Project是开发Java Web应用程序的常见步骤。Maven是一种强大的项目管理工具,而Dynamic Web Project则是Eclipse中的一个特殊项目类型,专用于Web...

    idea Project structrue总结+如何导入eclipse步骤 .docx

    Idea Project Structure 总结及如何导入 Eclipse 步骤 Idea Project Structure 是一个复杂的概念,其中包含了多个组件,例如 Project、Modules、Libraries、Facets、Artifacts 和 SDK。下面将对这些组件进行详细的...

    Eclipse导入jar包不能自动归类到ReferenceLibraries下问题解决

    Eclipse导入jar包不能自动归类到ReferenceLibraries下问题解决

    创建user libraries和在项目中引用user library1

    在Java开发过程中,有时我们需要将常用的第三方库组织起来,方便在多个项目中复用,这时就可以使用"User Libraries"功能。本文将详细介绍如何创建和在项目中引用User Library。 首先,我们来创建一个User Library:...

    eclipse 如何创建 user library 方法详解

    根据你的需求,为这个User Library起一个有意义的名字,比如“SpringFramework”或“Log4j”。点击“Next &gt;”继续。 步骤四:添加库文件 在这个新的窗口中,你可以看到“Add Jars”和“Add External Jars”两个选项...

    eclipse问题解决

    根据提供的信息,本文将针对Eclipse使用过程中遇到的一些常见问题及其解决方案进行详细的阐述与解析,以便帮助更多开发者解决实际工作中可能遇到的技术难题。 ### Eclipse简介 Eclipse是一款免费开源的集成开发...

    maximo eclipse的jdk和库设置图解

    例如,如果JDK安装在`D:\jdk1.4`,你可以命名这个变量为`JDK_HOME`,并设置其路径为`D:\jdk1.4\jre\lib\rt.jar`。这使得Eclipse知道在哪里寻找Java运行时环境。 2. **配置Source Folder**: - 除了配置JDK,你还...

    如何在eclipse中配置JFreeChart

    3. 在Eclipse中配置User Libraries 打开Eclipse,依次点击Window(窗口)菜单中的Preferences(首选项)选项。在弹出的对话框中,选择Java,然后是BuildPath,再接着是User Libraries,点击New(新建)按钮创建一个...

    Selenium WebDriver Project on Eclipse

    启动 Eclipse 并选择“File” &gt; “New” &gt; “Other”,在弹出的对话框中选择“Maven Project”。 ![添加新项目](pic1) ##### 2. 选择 Maven 项目 在出现的新窗口中选择“Maven Project”,然后点击“Next”。 !...

    ubuntu 下eclipse CDT搭建交叉编译开发环境

    本文将详细介绍如何在ubuntu平台下使用eclipse CDT搭建交叉编译开发环境,包括准备相关软件安装包、安装软件包、应用程序编译、导入现存的makefile project、Qt 插件安装等几个方面的内容。 一、准备相关软件安装包...

    poi导入到eclipse

    通过poi,我们可以轻松地读取Microsoft Office的文件,并将其转换为Java对象,以便进一步的处理和分析。 poi是一个非常强大的Java库,提供了许多实用的方法来读取Microsoft Office的文件,我们可以通过poi来轻松地...

    把外部项目导入eclipse

    本文将指导您如何将外部的 JSP + Servlet 项目导入 Eclipse 中,并解决一些可能遇到的问题。 将外部项目导入 Eclipse 首先,需要确保 Eclipse 是 Java EE 版本的,或者已经安装了 WTP 插件。然后,修改 Eclipse ...

    eclipse配置nutch,eclipse配置nutch

    2. 下载这些库,并将其添加到Eclipse项目的Libraries路径下,通过“Properties &gt; Java Build Path &gt; Libraries &gt; Add Jars”完成。 #### 步骤4:修改配置文件 为了使Nutch在Eclipse中正常运行,你需要修改Nutch的...

    Eclipse ve 安装

    通过点击新建图标,选择Visual Class,设定Source Folder、Package和类名,然后在左侧的SWT组件中选择Shell,并勾选必要的构造函数和抽象方法。 通过以上步骤,你已经成功安装并配置了Eclipse以及VE插件,可以开始...

    Eclipse使用插件时提示Plugin Error loading shared libraries

    在使用Eclipse集成开发环境(IDE)的过程中,有时可能会遇到“Plugin Error loading shared libraries”的错误提示,这通常意味着Eclipse中的某个插件在尝试加载共享库(动态链接库,DLLs)时遇到了问题。...

    eclipse中常用配置

    创建用户自定义类库是管理依赖项的重要步骤,通过`window-&gt;preferences-&gt;java-&gt;build path-&gt;user libraries`,你可以添加JAR文件或者整个库目录,方便项目引用。 代码模板是编写常见代码片段的快捷方式,`window-&gt;...

    myeclipse工程转eclipse工程

    ### 如何将MyEclipse开发的项目转换为Eclipse工程 在软件开发过程中,开发者可能会因为各种原因(比如团队统一工具、个人习惯变化等)而需要更换开发环境。本篇文章将详细介绍如何将原本使用MyEclipse开发的项目...

Global site tag (gtag.js) - Google Analytics