簡體   English   中英

如何將一批Mavenized示例轉換為Eclipse可以理解的格式?

[英]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_pathmaven_dirs

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM