Как я могу преобразовать пакет примеров Mavenized в формат, понятный Eclipse? - PullRequest
0 голосов
/ 11 ноября 2010

Я пытаюсь найти некоторые примеры, которые в настоящее время представлены в одном формате (НЕ 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

Кроме того, мне нужна возможность создавать определенные скрытые файлы, которыеЗатмение необходимо.Одним из них является файл .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>

Как создать текстовый файл с одним из этих языков сценариев?

Заранее спасибо.

Ответы [ 3 ]

5 голосов
/ 12 ноября 2010

Как преобразовать пакет примеров Mavenized в формат, понятный Eclipse?

Eclipse может понимать проекты Mavenized.У вас есть два варианта:

  • использовать плагин Maven Eclipse (плагин Maven) и запустить mvn eclipse:eclipse на примере Mavenized для генерации .project и .classpath и затем импортируйте его как Существующий проект в Eclipse.

  • используйте плагин m2eclipse (плагин Eclipse) для прямого импорта Существующий проект Maven в вашем рабочем пространстве.

Оба подхода являются эксклюзивными, используйте один или другой.В настоящее время люди предпочитают плагин m2eclipse, который обеспечивает полную интеграцию с Maven.

2 голосов
/ 11 ноября 2010

Прежде чем вы сделаете какие-либо "манипулирования", я бы попробовал, чтобы ваши maven примеры работали в Eclipse. Eclipse имеет несколько плагинов для разработки Maven-проектов.

0 голосов
/ 16 ноября 2010

Это должно делать то, что вам нужно (в 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 перед запуском.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...