M2E не добавляет источник Groovy в .classpath при импорте существующего проекта maven

При использовании Eclipse Indigo для импорта существующего проекта maven результирующий проект рабочей области не содержит src/main/groovy или src/test/groovy в пути сборки. Я также хотел бы, чтобы выходной каталог для заводного кода был установлен на target/test-classes.

Это мой первый вопрос к этой замечательной группе, поэтому я надеюсь, что охватила все основы.

Окружающая обстановка:

  • Затмение Индиго
  • m2e — интеграция Maven для Eclipse 1.2.0.20120903-1050 org.eclipse.m2e.feature.feature.group Eclipse.org — m2e
  • Соединитель m2e для плагина build-helper-maven 0.15.0.201207090124 org.sonatype.m2e.buildhelper.feature.feature.group Sonatype, Inc.
  • Соединитель APT M2E 0.0.1.3 de.joe.m2e.apt.feature.feature.group null
  • Функция Groovy-Eclipse 2.5.2.xx-20110929-1800-e37 org.codehaus.groovy.eclipse.feature.feature.group Codehaus.org
  • Интеграция Groovy-Eclipse M2E 2.7.1.xx-20120921-2000-e37RELEASE org.codehaus.groovy.m2eclipse.feature.group Codehaus.org
  • Конфигуратор проектов Tycho 0.6.0.201207302152 org.sonatype.tycho.m2e.feature.feature.group Sonatype, Inc.

Мой pom.xml для проекта:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org        /2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>com.jha.yhs</groupId>
<artifactId>fraud.server.parent</artifactId>
<version>201203.8.0-SNAPSHOT</version>
</parent>
<artifactId>ach-wire</artifactId>
  <dependencies>

  <dependency>
    <groupId>com.jha.yhs</groupId>
    <artifactId>aspects</artifactId>
    <version>${project.version}</version>
  </dependency>

    <dependency>
        <groupId>com.jha.yhs</groupId>
        <artifactId>database</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>

  <dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>r09</version>
  </dependency>

  <dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-all</artifactId>
    <version>1.7.6</version>
  </dependency>

  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.8.2</version>
    <scope>test</scope>
  </dependency>

  <dependency>
    <groupId>org.spockframework</groupId>
    <artifactId>spock-core</artifactId>
    <version>0.5-groovy-1.7</version>
    <scope>test</scope>
  </dependency>

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.3.155</version>
</dependency>


  <dependency>
    <groupId>org.dbunit</groupId>
    <artifactId>dbunit</artifactId>
    <version>2.4.8</version>
    <scope>test</scope>
  </dependency>

  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>3.0.5.RELEASE</version>
  </dependency>

<dependency>
    <groupId>joda-time</groupId>
    <artifactId>joda-time</artifactId>
    <version>1.6.2</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <scope>test</scope>
    <version>1.6.1</version>
</dependency>
<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-all</artifactId>
    <version>1.8.5</version>
    <scope>test</scope>
</dependency>
 </dependencies>
 <build>
  <plugins>

    <plugin>
      <groupId>org.codehaus.gmaven</groupId>
      <artifactId>gmaven-plugin</artifactId>
      <version>1.3</version>
    </plugin>

  </plugins>
</build>
</project>

Теперь этот pom.xml является дочерним (в подкаталоге) другого pom.xml, который содержит:

<build>

  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>2.3.2</version>

      <configuration>
        <compilerVersion>1.6</compilerVersion>
        <source>1.6</source>
        <target>1.6</target>
        <compilerArguments>
          <encoding>windows-1252</encoding>
        </compilerArguments>
      </configuration>
    </plugin>

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.7</version>
    <executions>
      <execution>
        <id>add-source</id>
        <phase>generate-sources</phase>
        <goals>
          <goal>add-source</goal>
        </goals>
        <configuration>
          <sources>
            <source>src/main/groovy</source>
          </sources>
        </configuration>
      </execution>

      <execution>
        <id>add-test-source</id>
        <phase>generate-test-sources</phase>
        <goals>
          <goal>add-test-source</goal>
        </goals>
        <configuration>
          <sources>
            <source>src/test/groovy</source>
          </sources>
        </configuration>
      </execution>
    </executions>
  </plugin>


    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.4.2</version>
      <configuration>
        <argLine>-Xmx1024m -XX:MaxPermSize=256m -XX:-HeapDumpOnOutOfMemoryError</argLine>
        <includes>
          <include>**/UnitTests.java</include>
        </includes>
      </configuration>
    </plugin>

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>2.9</version>
        <executions>
            <execution>
                <id>integration-test</id>
                <goals>
                    <goal>integration-test</goal>
                </goals>
            </execution>
            <execution>
                <id>verify</id>
                <goals>
                    <goal>verify</goal>
                </goals>
          </execution>
        </executions>
    </plugin>

    <plugin>
      <groupId>org.codehaus.gmaven</groupId>
      <artifactId>gmaven-plugin</artifactId>
      <version>1.3</version>

      <dependencies>

        <dependency>
          <groupId>org.codehaus.gmaven.runtime</groupId>
          <artifactId>gmaven-runtime-1.7</artifactId>
          <version>1.3</version>
        </dependency>

        <dependency>
          <groupId>org.codehaus.groovy</groupId>
          <artifactId>groovy-all</artifactId>
          <version>1.7.6</version>
        </dependency>

      </dependencies>

      <configuration>
        <providerSelection>1.7</providerSelection>
      </configuration>

      <executions>
        <execution>
          <goals>
            <goal>generateStubs</goal>
            <goal>compile</goal>
            <goal>generateTestStubs</goal>
            <goal>testCompile</goal>
          </goals>
        </execution>
      </executions>
    </plugin>

обратите внимание, я могу добавить исходные папки groovy, используя: - путь сборки GUI - путем редактирования файла .classpath - запустите mvn eclipse:eclipse из командной строки, и исходный каталог groovy будет добавлен в .classpath, но не в выходные каталоги.

Однако, глядя на: это и this с помощью build-helper должен решить проблему. Я попытался поместить ссылку на build-helper в проект pom.xml без каких-либо изменений в поведении. Я также попытался использовать плагин maven-eclipse для установки дополнительных исходных папок, как описано здесь и

У нас есть четыре из этих подпроектов, которые используют groovy, и мне бы хотелось, чтобы не нужно было добавлять папки groovy и выходные папки для основных и тестировать каждый из них всякий раз, когда мы извлекаем новый код из SVN. Похоже, что проект M2E import maven просто работает неправильно. То же самое и с maven->updateProject. Что я упускаю из этого?

В качестве обходного пути кажется, что m2e 1.2 не перезаписывает файлы .classpath и .project, как это любил делать m2e 1.0, поэтому я всегда могу вручную настроить файлы .classpath и .project и поместить их в систему управления версиями.


person Stephen Gissendaner    schedule 08.10.2012    source источник
comment
Что произойдет, если вы поместите всю конфигурацию gmaven и build-helper в дочерние проекты?   -  person Andrew Eisenberg    schedule 10.10.2012


Ответы (1)


Я использую Groovy в разработке веб-приложений с помощью Maven. Но я использую groovy-eclipse-compiler. Сначала я настраиваю плагин компилятора Maven:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.5.1</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
                <compilerId>groovy-eclipse-compiler</compilerId>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.codehaus.groovy</groupId>
                    <artifactId>groovy-eclipse-compiler</artifactId>
                    <version>${groovy-eclipse-compiler.version}</version>
                </dependency>
            </dependencies>
        </plugin>

Затем я настраиваю исходные каталоги:

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>1.7</version>
            <executions>
                <execution>
                    <id>add-source</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>add-source</goal>
                    </goals>
                    <configuration>
                        <sources>
                            <source>src/main/groovy</source>
                        </sources>
                    </configuration>
                </execution>
                <execution>
                    <id>add-test-source</id>
                    <phase>generate-test-sources</phase>
                    <goals>
                        <goal>add-test-source</goal>
                    </goals>
                    <configuration>
                        <sources>
                            <source>src/test/groovy</source>
                        </sources>
                    </configuration>
                </execution>
            </executions>
        </plugin>

После этого я могу использовать Groovy с Eclipse + m2e (на самом деле я использую Springsource Tool Suite с подключаемым модулем Groovy). У меня есть синтаксис Groovy и автодополнение (далеко от идеала), также я могу использовать классы Groovy из Java и наоборот.

person madhead    schedule 01.01.2013