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

将Grails应用程序配置为在开发中使用Oracle驱动程序,但在构建war时不包括它,oracle,grails,Oracle,Grails,我通过在lib目录中添加驱动程序jar和刷新依赖项,将应用程序配置为在开发环境中运行时使用Oracle。然后,当我构建应用程序时,Grails在war文件中包含这个驱动程序jar。我的目标是避免在war文件中包含驱动程序jar,因为我将在已经有此驱动程序的Tomcat服务器中部署应用程序 Grails版本:2.1.1 有什么想法吗 谢谢我想说的是,这就是提供的范围: dependencies { provided 'oracle:oracle-driver:6.66' } 在这个范

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

Grails版本:2.1.1

有什么想法吗


谢谢

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

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

在这个范围内,依赖关系被添加到开发中,但不包括在打包的war中,因为它应该由war将要部署的运行时环境提供。

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

dependencies {
    build('ojdbc:ojdbc:14')
}
BuildConfig.groovy
中,您可以添加这样一个块,当您构建它时,它也将从war中删除():


这是你要找的Gradle或Maven, 建议改用grails gradle插件。 清理并使用引导作用域将Tomcat JAR从war中排除

一般信息

在2013年gr8conf的Youtube上。我能够创建一个小型POC,Gradle似乎可以很好地使用Grails2.1.1

渐变生成文件

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

现在,我正在使用“grails.war.resources”配置选项在war文件完全创建之前添加额外的处理,但我仍然将jar放在lib目录中并刷新依赖项。在我看来,这不应该是最好的解决方案,因为Grails有一个用于此目的的依赖机制。现在我在这一行工作,我试图将本地Oracle JDBC客户机jar包括在ivy(或maven)的本地存储库中,以便稍后在BuildConfig.groovy文件的块依赖项中使用它,理想情况下,使用lukelazarovic建议的“提供”范围。
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"
}