目前在开发过程中,同一个项目需要使用到多个语言的问题,如果创建不同的项目有需要进行整合,非常不方便,
后来想如何在同一个项目下进行多语言交互式开发。
通过对eclipse的研究找到了相应的解决方式,特分享之。
为什么有这样的想法,是因为在使用的hive过程中,针对不同的业务场景,有java代码编写udf,有python代码处理脚本等,如果分成不同的项目进行,在后期进行整合有觉得不方便,如何就在eclipse进行简单的切换就能到相应的开发环境中进行编写代码,如下图:
通过红色方式。
第一步骤:
创建一个java项目,创建一个python项目。
java项目下面会生成:.project文件和.classpath文件
该文件里主要内容如下:
<?xmlversion="1.0"encoding="UTF-8"?>
<projectDescription>
<name>java_project</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
这里忽略.classpath的内容,
因为在合并的时候,该文件一般无需修改(这里都是设置lib路径、.class文件生成路径、源码代码路径等。打开后,自己看吧,很简单的)
然后在.settings目录下有个文件:org.eclipse.core.resources.prefs
内容如下:
#Mon Oct 15 11:56:40 CST 2012
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.6
python项目下生成两个文件:.project和.pydevproject
.project文件里主要内容如下:
<?xmlversion="1.0"encoding="UTF-8"?>
<projectDescription>
<name>py_project</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.python.pydev.PyDevBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.python.pydev.pythonNature</nature>
</natures>
</projectDescription>
.pydevproject文件里主要内容如下:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?eclipse-pydev version="1.0"?>
<pydev_project>
<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
<path>/py_project</path>
</pydev_pathproperty>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.7</pydev_property>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property>
</pydev_project>
然后在.settings目录下有个文件:org.eclipse.core.resources.prefs
#Mon Oct 15 11:56:40 CST 2012
eclipse.preferences.version=1
encoding/<project>=UTF-8
第二个步骤:
将两个项目下这几个文件进行并集处理(相同的文件进行合并,不相同的就增加)
这里以将python项目合并到java中为例。
那么这样org.eclipse.core.resources.prefs合并后的内容如下:
#Mon Oct 15 11:56:40 CST 2012
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.6
encoding/<project>=UTF-8
.project文件合并后的内容如下:
<?xmlversion="1.0"encoding="UTF-8"?>
<projectDescription>
<name>java_project</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.python.pydev.PyDevBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.python.pydev.pythonNature</nature>
</natures>
</projectDescription>
将.pydevproject拷贝到跟.project文件同级目录下即可。
这里需要注意:
.project文件里的<name>值
.pydevproject文件里的<path>值
这两个值跟项目名称有关。
上述操作完成后,就完成了同一个项目切换多个语言开发环境。