首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用gmaven插件获取org.codehaus.groovy.control.MultipleCompilationErrorsException

使用gmaven插件获取org.codehaus.groovy.control.MultipleCompilationErrorsException
EN

Stack Overflow用户
提问于 2011-10-30 00:40:31
回答 1查看 9.7K关注 0票数 4

这是我的示例程序,当使用mvn编译时,它抛出了编译错误,我尝试使用ExpandoMetaClass添加静态方法-

代码语言:javascript
复制
@Singleton
        class ThrowError {
            def parse ()
            {
                println "Anish"
            }

        }
        ThrowError.metaClass.static.getMap = {m_var -> ThrowError.instance.parse(m_var) }

我正在使用gmaven插件来编译项目,同时发出mvn compile ..........

代码语言:javascript
复制
[ERROR] Failed to execute goal org.codehaus.gmaven:gmaven-plugin:1.2:generateStubs (default) on project TestExpandoMetaClass: startup failed:
[ERROR] /C:/groovy/ThrowError.groovy: 4
: Invalid duplicate class definition of class ThrowError : The source /C:/groovy/ThrowError.groovy contains at least two definitions of the class ThrowError.
**[ERROR] One of the classes is a explicit generated class using the class statement, the other is a class generated from the s
cript body based on the file name. Solutions are to change the file name or to change the class name.**
[ERROR] @ line 4, column 1.
[ERROR] @Singleton
[ERROR] ^
[ERROR]
[ERROR] 1 error
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.gmaven:gmaven-plugin:1.2:generate
Stubs (default) on project TestExpandoMetaClass: startup failed:
/C:/groovyThrowError.groovy: 4: Invali
d duplicate class definition of class ThrowError : The source /groovy/ThrowError.groovy contains at least two definitions of the class ThrowError

这是我的pom.xml条目gmaven构建插件条目

代码语言:javascript
复制
    <project>
............
............
    <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.6</source>
                        <target>1.6</target>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>1.1</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>java</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.gmaven</groupId>
                    <artifactId>gmaven-plugin</artifactId>
                    <version>1.2</version>
                    <configuration>
                        <providerSelection>1.7</providerSelection>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>org.codehaus.gmaven.runtime</groupId>
                            <artifactId>gmaven-runtime-1.7</artifactId>
                            <version>1.2</version>
                        </dependency>
                        <dependency>
                            <groupId>org.codehaus.groovy</groupId>
                            <artifactId>groovy-all</artifactId>
                            <version>1.7.2</version>
                        </dependency>
                    </dependencies>
                    <executions>
                        <execution>
                            <goals>
                                <goal>generateStubs</goal>
                                <goal>compile</goal>
                                <goal>generateTestStubs</goal>
                                <goal>testCompile</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
..........
..........
    </project>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-02 02:18:30

这里的答案与Groovy邮件列表中的答案相同,可能会有更多的解释……在Groovy中,我们有脚本和类。类就是具有类结构的所有东西,就像在Java中一样。例如,类B{}是一个类结构,并且定义了一个类B。脚本也是类,但它们不在这样的结构中。如果您现在有了"class B{};def B = new B()",那么您就有了一个B的类结构,但也有了一个内容为"def b= new B()“的脚本。正如我所说的,这也是一个类,但是那个类的名字是什么呢?名称由文件的名称定义,该脚本是在其中定义的(如果没有文件,则选择类似于script1456的名称)。现在您可以创建一个B.groovy,其内容为"class B{};def b= new B()“。将有一个名为B的类和一个具有完全相同名称的脚本。这是一个冲突。

如果您为该文件指定一个不同的名称,则完全没有问题。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7940202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档