配置Grails应用程序以在开发中使用Oracle驱动程序,但在构建战争时不包括它

时间:2014-03-27 11:53:14

标签: oracle grails

我已经将我的应用程序配置为在开发环境中运行时使用Oracle,方法是在lib目录中添加驱动程序jar并刷新依赖项。然后,当我构建应用程序时,Grails在war文件中包含此驱动程序jar。我的目标是避免在war文件中包含驱动程序jar,因为我将在已有此驱动程序的Tomcat服务器中部署该应用程序。

Grails版本:2.1.1

有什么想法吗?

由于

3 个答案:

答案 0 :(得分:1)

我想说的是,提供的范围是:

dependencies { 
    provided 'oracle:oracle-driver:6.66' 
}

使用此范围,依赖项会在开发中添加,但不包含在打包战争中,因为它将由将要部署WAR的运行时环境提供。

答案 1 :(得分:1)

我建议在BuildConfig.groovy文件中定义依赖项,而不是手动将jar放入lib目录。在BuildConfig.groovy中你应该有一个依赖块。在其中你可以添加你的依赖

dependencies {
    build('ojdbc:ojdbc:14')
}

BuildConfig.groovy内部你可以添加一个像这样的块,当你构建它时,它也会从战争中删除它(Stackoverflow on removing files from war):

grails.war.resources = { stagingDir ->
    //you can use wild cards or explicitly remove it
    delete(file:"${stagingDir}/WEB-INF/lib/ojdbc*.jar")
}

答案 2 :(得分:0)

以下是您要寻找的Gradle或Maven,  建议使用grails-gradle-plugin代替。  清理和使用引导范围以从战争中排除Tomcat jar。

一般信息

在youtube上的gr8conf 2013.我能够创建一个小POC,并且Gradle似乎可以与Grails 2.1.1一起使用。

Gradle构建文件

buildscript {
  repositories {
    mavenCentral()
    maven { url 'http://repository.jboss.org/maven2/' }
    maven { url 'http://repo.grails.org/grails/repo' }
    maven { url 'http://repo.grails.org/grails/plugins' }
    maven { url 'http://repository.springsource.com/maven/bundles/release' }
    maven { url 'http://repository.springsource.com/maven/bundles/external' }
    maven { url 'http://repository.springsource.com/maven/libraries/release' }
    maven { url 'http://repository.springsource.com/maven/libraries/external' }
  }

  dependencies {
    classpath 'org.grails:grails-gradle-plugin:2.0.0-SNAPSHOT',
    'org.grails:grails-bootstrap:2.2.3' 
  }
}

version='0.0.1'

apply plugin: 'grails'

repositories {
  mavenCentral()
  maven { url 'http://repository.jboss.org/maven2/' }
  maven { url 'http://repo.grails.org/grails/repo' }
  maven { url 'http://repo.grails.org/grails/plugins' }
  maven { url 'http://repository.springsource.com/maven/bundles/release' }
  maven { url 'http://repository.springsource.com/maven/bundles/external' }
  maven { url 'http://repository.springsource.com/maven/libraries/release' }
  maven { url 'http://repository.springsource.com/maven/libraries/external' }  
}

grails {
  grailsVersion '2.2.3'
  version '2.2.3'
}

configurations {
  all {
    exclude module: 'commons-logging'
    exclude module: 'xml-apis'
  }
  test {
    exclude module: 'groovy-all'
  }
  compile {
    exclude module: 'hibernate'
  }
}

dependencies {
  compile( "org.grails:grails-crud:$grails.grailsVersion",
           'org.grails:grails-gorm:1.3.7')

  bootstrap "org.grails:grails-plugin-tomcat:$grails.grailsVersion"
}

Refer this Stackoveflow question :