Grails 2.3.8可搜索插件和Maven

时间:2014-09-24 23:10:58

标签: java maven grails

我得到了一个简短的问题,有一段时间我正试图让我的应用程序与maven一起构建并运行到小型的hickup中。

要开始,我从以下网址更新:

Grails 1.3.7 -> 2.0 -> 2.1 -> 2.3.8

使用标准的BuildConfig.groovy,它工作正常,我的应用就像它应该的那样。

现在执行:

grails create-pom mycompany

并调整pom以反映现实,我一直遇到以下错误:

[context.ContextLoader] [ERROR] [16:00:24] [上下文初始化失败] org.springframework.beans.factory.BeanCreationException:在ServletContext资源[/WEB-INF/applicationContext.xml]中定义了名为'pluginManager'的bean创建错误:init方法的调用失败;嵌套异常是java.lang.NoClassDefFoundError:Lgrails / plugin / searchable / SearchableService;     at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:733)     at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:233)     at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1214)     at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:676)     在org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:455)     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)     在org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:90)     在org.eclipse.jetty.server.Server.doStart(Server.java:261)     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)     在org.grails.jetty.JettyServer.startServer(JettyServer.groovy:134)     在org.grails.jetty.JettyServer.start(JettyServer.groovy:99)     在_GrailsRun $ _run_closure1.doCall(_GrailsRun.groovy:60)     在RunApp $ _run_closure1.doCall(RunApp.groovy:33)     在org.grails.launcher.GrailsLauncher.launch(GrailsLauncher.java:144)     在org.grails.maven.plugin.tools.ForkedGrailsRuntime.main(ForkedGrailsRuntime.java:168) 引起:java.lang.NoClassDefFoundError:Lgrails / plugin / searchable / SearchableService;     at java.lang.Class.privateGetDeclaredFields(Class.java:2348)     at java.lang.Class.getDeclaredField(Class.java:1916)     ......还有15个 引起:java.lang.ClassNotFoundException:grails.plugin.searchable.SearchableService     在org.grails.launcher.RootLoader.findClass(RootLoader.java:147)     at java.lang.ClassLoader.loadClass(ClassLoader.java:306)     在org.grails.launcher.RootLoader.loadClass(RootLoader.java:119)     at java.lang.ClassLoader.loadClass(ClassLoader.java:247)     ......还有17个

配置我的pom:

构建部分:

<build>
    <pluginManagement/>

    <plugins>
        <!-- Disables the Maven surefire plugin for Grails applications, as we have our own test runner -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <skip>true</skip>
            </configuration>
            <executions>
                <execution>
                    <id>surefire-it</id>
                    <phase>integration-test</phase>
                    <goals>
                        <goal>test</goal>
                    </goals>
                    <configuration>
                        <skip>false</skip>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-clean-plugin</artifactId>
            <version>2.4.1</version>
            <configuration>
                <filesets>
                    <fileset>
                        <directory>plugins</directory>
                        <includes>
                            <include>**/*</include>
                        </includes>
                        <followSymlinks>false</followSymlinks>
                    </fileset>
                </filesets>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.grails</groupId>
            <artifactId>grails-maven-plugin</artifactId>
            <version>${grails.version}</version>
            <configuration>
                <!-- Whether for Fork a JVM to run Grails commands -->
                <fork>true</fork>
            </configuration>
            <extensions>true</extensions>

        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>


    </plugins>
</build>    

依赖部分:

<dependencies>

.....

    <dependency>
        <groupId>org.grails.plugins</groupId>
        <artifactId>searchable</artifactId>
        <version>0.6.9</version>
        <type>zip</type>
        <scope>compile</scope>
    </dependency>

....    

</dependencies>

并执行mvn clean install显示可搜索插件的成功安装。

加载Grails 2.3.8 |配置类路径 |运行预编译的脚本 。 |环境设置为开发 ...... |安装zip tinyurl-0.1.zip ... ... |安装插件tinyurl-0.1 ............. |安装zip executor-0.3.zip ... ... |已安装的插件执行器-0.3 ............. |安装zip searchable-0.6.9.zip ... ... |已安装的插件可搜索-0.6.9

感谢您安装Grails Searchable Plugin!

文档可在......

获得

可从user@grails.codehaus.org获取帮助

应该在......提出问题和改进。

如果您要从之前的版本升级,请参阅...

|安装zip jquery-datatables-1.7.5.zip ... ...

|已安装的插件jquery-datatables-1.7.5

............. |安装zip jetty-2.0.3.zip ... ...

|已安装的插件jetty-2.0.3 .............

我真的很感激这方面的一些帮助,并提前感谢!

2 个答案:

答案 0 :(得分:0)

这是你的stacktrace中的相关行:

java.lang.ClassNotFoundException: grails.plugin.searchable.SearchableService

您的BuildConfig.groovy中有以下内容吗?

compile ":searchable:0.6.9"

(根据http://grails.org/plugin/searchable

答案 1 :(得分:0)

好的,这个问题的解决方案原来是将maven grails插件更新为2.4.3,现在一切都在构建。

       <plugin>
            <groupId>org.grails</groupId>
            <artifactId>grails-maven-plugin</artifactId>
            <version>2.4.3</version>
            <configuration>
                <!-- Whether for Fork a JVM to run Grails commands -->
                <fork>true</fork>
                <grailsVersion>${grails.version}</grailsVersion>
            </configuration>
            <extensions>true</extensions>

        </plugin>

感谢您提供的帮助