目前在開發過程中,同一個項目需要使用到多個語言的問題,如果建立不同的項目有需要進行整合,非常不方便,
後來想如何在同一個項目下進行多語言互動式開發。
通過對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>值
這兩個值跟項目名稱有關。
上述操作完成後,就完成了同一個項目切換多個語言開發環境。