Build script doesn't include libs at runtime, only at configuration time


(necromantiarian necromantiarian) #1

gradle dont use classpath dependencies in runtime

when add dependencies to buildscript they can be used inside of tasks at compile time, but not when I ran the tasks at runtime

buildscript {
    repositories {
        maven {
            url "https://company.com/content/groups/public"
        }
        mavenLocal()
    }
      dependencies {
        classpath 'net.sourceforge.jtds:jtds:1.2.4'
        classpath 'org.codehaus.groovy:groovy-all:2.1.2'
    }
  }
  import groovy.sql.Sql
task myTask << {
    Sql sql = Sql.newInstance('someUrl', 'someuser', 'somepass', 'jdbc:jtds:sqlserver://localhost/db')
}

the task passes stage 1, but when executed doesn’t find driver class

so that some scenarios like: 1) task which connects to db - doesnt find driver class (dependency is in classpath) 2) task with custom logj4 and log4j.properties doesn’t see appenders, cause log4j.properties is not in classpath


(Peter Niederwieser) #2

The case above is a known problem with JDBC class loading and Groovy. One solution is to implement the task as a Java class (e.g. in ‘buildSrc/src/main/java’). For other workarounds, search the forums and/or Stack Overflow (this has been asked before).