Getting org.codehaus.groovy.control.MultipleCompilationErrorsException using gmaven plugin

回眸只為那壹抹淺笑 提交于 2019-12-12 12:22:23

问题


This is my sample program, while compiling using mvn it throws me the compilation error, i'm trying to add a Static Methods using ExpandoMetaClass -

@Singleton
        class ThrowError {
            def parse ()
            {
                println "Anish"
            }

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

i'm using gmaven plugin to compile the project, while issuing mvn compile ..........

[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

this is my pom.xml entry gmaven build plugin entry

    <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>

回答1:


Same answer here as on the Groovy mailing list, well a bit more explained maybe... In Groovy we have scripts and classes. A class is everything with a class structure, like in Java. For example class B{} is a class structure and defines a class B. scripts are classes too, but they are not in such a strucuture. If you now have "class B{}; def b = new B()",you have a class structure for B, but also a script with the content "def b = new B()". As I said thisis a class as well, but what is the name of that class? The name is defined by the name of the file, that script is defined in (if there is no file, then a name like script1456 is chosen). Now you may create a B.groovy, with the content "class B{}; def b = new B()". There would be one class named B, and a script with the very same name. This is a conflict.

You are perfectly fine if you give the file a different name.



来源:https://stackoverflow.com/questions/7940202/getting-org-codehaus-groovy-control-multiplecompilationerrorsexception-using-gma

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!