[英]How can I convert a batch of Mavenized examples into a format that Eclipse understands?
我正在研究一些當前采用一種格式的示例(“未行化-實際上是ANT形式”),並試圖找到一種自動的方法將其拼湊成Eclipse可以理解的東西。 盡管我有數年的Java和其他奇特的語言,但是用Java進行操作聽起來像是用大錘釘釘子。
我一直在研究腳本語言,例如Ruby,Python,Perl等。 我沒有任何經驗,但很高興學習。
如何以一種格式(目錄或包含文件的目錄)作為示例,然后將其重組為類似於Eclipse項目的格式? 例如,我想要一棵具有以下結構的樹
dir my_example
- build.xml
- deployment.xml
- jboss-esb-unfiltered.xml
- log4j.xml
- readme.txt
並將其轉換為
dir1 my_example_eclipse
- dir src
- [empty]
- dir esbcontent
- dir META-INF
- deployment.xml
- jboss-esb-unfiltered.xml
- log4j.xml
- readme.txt
另外,我需要能夠創建Eclipse需要的某些隱藏文件。 其中一個是.project文件,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>helloworld</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.common.project.facet.core.builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
</natures>
</projectDescription>
如何使用這些腳本語言之一創建文本文件?
提前致謝。
如何將一批Mavenized示例轉換為Eclipse可以理解的格式?
Eclipse可以理解Mavenized項目。 您有兩種選擇:
使用Maven Eclipse插件 (一個Maven插件)並在Mavenized示例上運行mvn eclipse:eclipse
來生成.project
和.classpath
,然后將其作為現有項目導入到Eclipse中。
使用m2eclipse插件(Eclipse插件)將現有Maven項目直接導入到您的工作區中。
兩種方法都是互斥的,一種可以使用。 如今,人們傾向於使用提供完全Maven集成的m2eclipse插件。
在您進行任何“調整”之前,我會先嘗試使您的Maven示例在Eclipse中運行。 Eclipse有幾個插件可用於處理基於Maven的項目。
這應該可以滿足您的需求(在Python中):
import os
import shutil
def maven_to_eclipse(maven_dir, eclipse_dir):
# assumes mode of maven_dir will be the same as eclipse_dir
new_mode = os.stat(maven_dir).st_mode
if os.path.exists(eclipse_dir):
# if new_dir doesn't exist
# create it with same permissions as old_dir
os.mkdirs(eclipse_dir, new_mode)
# create directories under new_dir: src, ebscontent, ebscontent/META-INF
# use os.path.join to work on multiple os
os.mkdir(os.path.join(eclipse_dir, 'src'), new_mode)
os.mkdir(os.path.join(eclipse_dir, 'ebscontent'), new_mode)
os.mkdir(os.path.join(eclipse_dir, 'ebscontent', 'META-INF'), new_mode)
# cp old/deployment.xml new/ebsconent/META-INF/deployment.xml
shutil.copy2(os.path.join(maven_dir, 'deployment.xml'),
os.path.join(eclipse_dir, 'ebscontent', 'META-INF', 'deployment.xml'))
# cp old/jboss-esb-unfiltered.xml new/ebsconent/META-INF/jboss-esb-unfiltered.xml
shutil.copy2(os.path.join(maven_dir, 'jboss-esb-unfiltered.xml'),
os.path.join(eclipse_dir, 'ebscontent', 'META-INF', 'jboss-esb-unfiltered.xml'))
# cp old/log4j.xml new/ebsconent/log4j.xml
shutil.copy2(os.path.join(maven_dir, 'log4j.xml'),
os.path.join(eclipse_dir, 'ebscontent', 'log4j.xml'))
# cp old/readme.txt new/readme.txt
shutil.copy2(os.path.join(maven_dir, 'readme.txt'),
os.path.join(eclipse_dir, 'readme.txt'))
if __name__ == '__main__':
base_path = 'C:\\Path\\To\\Maven Dirs'
maven_dirs = ('my_example', 'another_example', 'third_example')
for maven_dir in maven_dirs:
maven_to_eclipse(os.path.join(base_path, maven_dir),
os.path.join(base_bath, maven_dir + '_eclipse'))
這應該可以在多個操作系統上使用。 這本來可以寫得短些,但對新手來說卻更令人困惑。 沒有嘗試捕獲異常。 例如,如果新目錄已經存在,則os.mkdirs可能會失敗。
在運行之前更改base_path
和maven_dirs
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.