我正在考虑采用当前采用一种格式的一些示例(不是Mavenized - 实际上是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>
如何使用其中一种脚本语言创建文本文件?
提前致谢。
答案 0 :(得分:5)
如何将一批Mavenized示例转换为Eclipse理解的格式?
Eclipse可以理解Mavenized项目。您有两种选择:
使用Maven Eclipse Plugin(Maven插件)并在Mavenized示例上运行mvn eclipse:eclipse
以生成.project
和.classpath
,然后将其导入为现有项目到Eclipse中。
使用m2eclipse插件(Eclipse插件)直接将现有Maven项目导入您的工作区。
两种方法都是排他性的,使用一种或另一种。如今,人们倾向于选择提供完整Maven集成的m2eclipse插件。
答案 1 :(得分:2)
在你做任何“munging”之前,我会尝试让你的maven示例先在eclipse中运行。 Eclipse有几个插件可用于处理基于maven的项目。
答案 2 :(得分:0)
这应该做你需要的(在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
。