Grails没有从基于pom.xml的Maven存储库中挑选jar

时间:2013-05-08 04:44:49

标签: grails maven-2 maven-3 grails-plugin grails-2.0

我收到一些编译错误,因为Grails没有从基于pom.xml文件的Maven存储库中挑选jar。

我的BuildConfig.groovy

grails.project.dependency.resolution = {
    // inherit Grails' default dependencies
    inherits("global") {
        // uncomment to disable ehcache
        // excludes 'ehcache'
        //excludes "grails-plugin-log4j"
    }

    log "error" // log level of Ivy resolver, either 'error', 'warn', 'info', 'debug' or 'verbose'
    checksums true // Whether to verify checksums on resolve
    //excludes   "grails-plugin-log4j"
    pom true
    repositories {
        inherits true // Whether to inherit repository definitions from plugins
        //grailsPlugins()
       /// grailsHome()
      //  grailsCentral()

        mavenCentral()
        mavenLocal()

        // These are for the hudson machine
        // mavenRepo "/apps/profiler/ci/hudson/workspace/RMSPortal2/m2_repo"
        // mavenRepo "/apps/profiler/ci/hudson/workspace/RMSPortal2/m2_repo"

        //mavenRepo "http://snapshots.repository.codehaus.org"
        //mavenRepo "http://repository.codehaus.org"
        // mavenRepo "http://download.java.net/maven/2/"
        //mavenRepo "http://repository.jboss.com/maven2/"
    }

    dependencies {
        // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg.
        runtime 'mysql:mysql-connector-java:5.1.5'
                compile 'org.apache.activemq:activemq-core:5.3.0'
        test 'org.objenesis:objenesis:1.2'
        compile 'org.slf4j:slf4j-log4j12:1.6.6'
        //compile "spring-security-config:3.0.1.RELEASE"
    }

    plugins {
        compile ":spring-security-core:1.2.7.3"
        compile ":spring-security-ui:0.2"
        compile ":jquery-ui:1.8.15"
        compile ":jqgrid:3.8.0.1"
        compile ":famfamfam:1.0.1"
        compile ":mail:1.0"
        compile ":jms:1.2"
        compile ":calendar:1.2.1"   
        compile ':gpars:0.3'
        compile ":lang-selector:0.3"
        compile ":crypto:2.0"
        compile ":grails-melody:1.13"
        runtime ":hibernate:$grailsVersion"
        runtime ":jquery:1.7.1"
        //runtime ":resources:1.1.6"
        runtime ":resources:1.2.RC2"
        runtime ":export:1.5"

        // Uncomment these (or add new ones) to enable additional resources capabilities
        //runtime ":zipped-resources:1.0"
        //runtime ":cached-resources:1.0"
        //runtime ":yui-minify-resources:0.1.4"
         build ":tomcat:$grailsVersion"
         test ":spock:0.6"
    }
}

我收到这样的错误:

 Configuring classpath.
| Environment set to development.....
| Packaging Grails application.....
| Compiling 141 source files.
| Error Compilation error: startup failed:
/mycompany/dev/rmaddidev/wsmavenTest/pro/src/groovy/com/mycompany/rms/common/RMSExportService.groovy: 15: unable to resolve class org.xhtmlrenderer.pdf.ITextRenderer
 @ line 15, column 1.
   import org.xhtmlrenderer.pdf.ITextRenderer
   ^
1 error

ITextRenderer类存在于我在maven pom中指定的core-renderer.jar中,如下所示。

如果我在BuildConfig.groovy中添加这些jar,那么它工作正常。

 compile 'org.xhtmlrenderer:core-renderer:R8'
    compile 'com.lowagie:itext:2.0.8'

和我的Pom文件:

<dependencies>
<dependency>
    <groupId>org.xhtmlrenderer</groupId>
    <artifactId>core-renderer</artifactId>
    <version>R8</version>
</dependency>
<dependency>
    <groupId>com.lowagie</groupId>
    <artifactId>itext</artifactId>
    <version>2.0.8</version>
</dependency>

1 个答案:

答案 0 :(得分:4)

只要在 BuildConfig.groovy 中引用了所有依赖项,您仍然可以使用标准grails命令。

但是,您可能不想同时维护Maven POM和 BuildConfig.groovy ,除非您有一些团队成员不想使用Maven。

除非项目需要使用Maven和标准Grails命令行“构建”,否则不惜一切代价避免使用 BuildConfig.groovy ,以及Grails命令行。

详细

使用Maven时,您需要执行以下操作:

  • 不要在 BuildConfig.groovy 中设置依赖项,将它们添加到您的POM中:

    • 从BuildConfig.groovy移动到POM的依赖项阻塞(默认隐含类型标记设置为jar)。
    • 对于非jar依赖项(插件或非二进制插件),您需要在pom.xml中将依赖项类型显式设置为 zip
  • 此外,从BuildConfig.groovy和set the repositories in your POM中移除存储库块。

  • 请勿使用grails命令行,请使用Grads Maven目标,如@dmahapatro所暗示。


当您决定使用Maven和Grails时,这意味着您希望避免在BuildConfig.groovy中进行设置。

然后你将拥有Maven POM驱动的构建设置(所有这些都是100%可能)。