对本地存储库中的依赖关系感到困惑(gradle)

时间:2012-03-06 19:14:24

标签: java build jar javac gradle

我尝试编译和打包我的java应用程序,但是当我尝试指定我的本地存储库时,我遇到了问题,我的jar将用作依赖项。我在'/ home / test / lib'中存储了我的应用程序所需的所有jar。我的build.gradle文件如下所示:

apply plugin:'application'
apply plugin:'java'
apply plugin:'idea'

    def repositoryPath = '/home/test/lib'

    repositories {
        repositoryPath
    }



dependencies {
            "org.springframework:spring-orm:3.0.2.RELEASE"
            "org.springframework:spring-context-support:3.0.2.RELEASE"
            'commons-dbcp:commons-dbcp:1.4'
            'org.apache.ibatis:ibatis-sqlmap:2.3.4.726'
            'commons-dbutils:commons-dbutils:1.3'
            'joda-time:joda-time:1.6'
            'commons-lang:commons-lang:2.5'
            'com.google.collections:google-collections:1.0'
}

jar {
    baseName = 'testJar'
}

mainClassName = "com.some.test.testRunner"

当我运行gradle build时,我收到“package * not exists”错误。

我的假设是gradle没有在我的lib文件夹中找到必需的外部jar。有人可以指出我在这里做错了什么。

由于

1 个答案:

答案 0 :(得分:6)

关于构建文件的一些评论。我假设你在'/ home / test / lib'中有一个包含你的第三方库的平面目录?如果是这种情况,您可以使用flatDir存储库,该存储库使用以下语法声明:

def repositoryPath = '/home/test/lib'

repositories {
    flatDir {
       dirs repositoryPath
    }
}

如果/ home / test / lib是常春藤存储库,您可以这样做:

repositories {
    ivy {
       url repositoryPath
    }
}

Gradle user guide

详细说明了这一点 你的'dependencies'部分中的

你错过了声明依赖的范围(编译,运行时等):

dependencies {
    compile "org.springframework:spring-orm:3.0.2.RELEASE"
    compile "org.springframework:spring-context-support:3.0.2.RELEASE"
    compile 'commons-dbcp:commons-dbcp:1.4'
    compile 'org.apache.ibatis:ibatis-sqlmap:2.3.4.726'
    compile 'commons-dbutils:commons-dbutils:1.3'
    compile 'joda-time:joda-time:1.6'
    compile 'commons-lang:commons-lang:2.5'
    compile 'com.google.collections:google-collections:1.0'
}

如果使用flatdir存储库,则通常会省略依赖关系定义的组:

dependencies {
    compile ":spring-orm:3.0.2.RELEASE"
    ...
}

请查看gradle用户指南,了解有关使用gradle的依赖项处理的详细信息:http://gradle.org/docs/current/userguide/userguide_single.html#artifact_dependencies_tutorial

的问候, 勒内