当前位置: 首页 > 知识库问答 >
问题:

M2E导入现有maven项目时未将Groovy源添加到.classpath

李宜然
2023-03-14

使用Eclipse Indigo导入现有的maven项目,得到的工作区项目在构建路径中不包括src/main/groovysrc/test/groovy。我还希望groovy代码的输出目录设置为target/test-classes

这是我对这支优秀的队伍的第一个问题,所以我希望我涵盖了所有的基础。

  • Eclipse Indigo
  • 针对Eclipse 1.2.0.20120903-1050的M2E-Maven集成org.Eclipse.m2e.feature.feature.group Eclipse.org-M2E
  • 用于build-helper-maven-plugin 0.15.0.201207090124 org.Sonatype.m2e.buildhelper.feature.feature.group Sonatype,inc.的M2E连接器
  • apt M2E连接器0.0.1.3 de.joe.M2E.apt.feature.feature.group为空
  • groovy-eclipse Feature 2.5.2.xx-20110929-1800-e37 org.codehaus.groovy.eclipse.Feature.Feature.group codehaus.org
  • Groovy-Eclipse M2E integration 2.7.1.xx-20120921-2000-e37release org.codehaus.groovy.m2eclipse.feature.group codehaus.org
  • 第谷项目配置器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>
<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>

请注意,我可以使用:-GUI的构建路径-通过编辑.classpath文件-从命令行运行mvn eclipse:eclipse,并将groovy源目录添加到.classpath目录,但不添加输出目录。

但是,看看:这个和这个使用build-helper应该可以解决问题。我尝试将build-helper引用放入项目pom.xml中,而行为没有改变。我还尝试使用maven-eclipse插件来设置附加的源代码文件夹,如本文所述

我们有四个子项目使用groovy,每当我们从SVN中提取新代码时,我希望不必为每个子项目添加groovy文件夹和main和test输出文件夹。M2E的import maven项目似乎不能正常工作。Maven->UpdateProject也不能正常工作。我错过了什么?

作为一种解决方案,M2E1.2似乎不会像M2E1.0喜欢做的那样覆盖.classpath和.project文件,因此我可以始终手动配置.classpath和.project文件并将它们放入源代码管理。

共有1个答案

符学
2023-03-14

我在用Maven开发的webapp中使用Groovy。但是我使用的是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工具套件与Groovy插件一起使用)。我有Groovy语法和自动完成(远不是理想的),我也可以使用来自Java的Groovy类,反之亦然。

 类似资料:
  • 问题内容: 我收到以下错误-我在依赖项中添加了GSon- 有人可以指出我做错了吗? 编辑:指定的依赖项- 我在sevlet中使用以下代码 makeLoginJSON — 问题答案: Try: 我已经编辑了评论并添加了范围。默认范围是compile,这意味着在运行时不存在依赖项。为此,请使用 提供的范围。有关Apache的Maven依赖关系简介中有关maven依赖关系的范围的更多信息

  • 我试图使用Eclipse的从maven开始。但如果我尝试将现有项目更改为Maven项目(),结果是: null 问题可能出在哪里? 更新(生成的pom.xml):

  • 问题内容: 我正在尝试将drools6.0修改为现有代码库(eclipse下的maven项目)。我以前不需要学习流口水或Maven(尽管它们是我以前的项目的一部分),足以说我迷失了自己想做的事情。根据我的理解(查找),Java类文件被挂接到基于包名(?)的规则上。这样可以解决编译时间问题。但是我在运行时看到空指针异常。为了使Drools适应我现有的代码库:1)创建helloworld drools

  • 我已经在Android Studio中创建了一段时间的应用程序,并决定将增强现实添加到我的应用程序中。我在Unity中创建了一个AR项目,并将该文件作为ADT和gradle导出,但不知道如何将其导入到现有项目中。我发现的所有东西都在导入到一个新项目中。如果我不能将它导入到我的Android Studio项目中,那么我可以以某种方式合并这两个项目吗?

  • 我已经在许多地方查阅了下面的错误,但似乎无法就解决方案或一个有效的解决方案达成共识。 “Maven项目扫描错误[项目路径];Java.lang.OutOfMemoryError:Java堆空间” 我将MAVEN_OPTS设置为“-xms512m-xmx1024m-xx:maxpermsize=1024” 我正在导入的项目是一个资产项目,有许多图像、图标、.swf和JS文件。 是不是我还需要什么,或

  • 我习惯于使用Maven分发项目,通常,团队中的每个人(以及CI服务器)都可以依赖Maven进行打包、测试、运行等调试,但是,项目可以导入到Eclipse并通过主类启动(与Eclipse的Maven插件相反)。Spring-Boot就是一个很好的例子。导入这样的项目后,我可以只运行或调试主类。 然而,对于JavaFX11来说,编写一个配置所有必要依赖关系的pom.xml似乎很有效,但是当我将这样一个