如何在Gradle构建中使用jar文件的提供范围?

时间:2013-09-11 10:36:27

标签: scope gradle

我需要在我的应用中使用亚马逊地图和亚马逊消息。

使用gradle,我没有成功添加带有“提供”范围{3}}的Amazon依赖项:

  

JAR文件包含Amazon Maps API的存根实现。它不包含Maps API类的实际实现,因此您不应将JAR编译到您的应用程序中。

as they need to be对我来说。

如果有人成功使用亚马逊地图或亚马逊消息传递Gradle,请在此处分享您的build.gradle文件。

5 个答案:

答案 0 :(得分:52)

2.12 release of Gradle中,添加了compileOnly以提供与provided范围类似的功能。测试类路径中发生的情况有所不同。以下是发行说明中的​​相关引用和摘录:

  

现在,您可以声明依赖项仅在编译时与Java plugin一起使用。仅编译依赖项仅在源编译期间使用,并且不包含在运行时类路径中或公开给依赖项目。此行为类似于“提供的”行为。基于Maven的构建中可用的范围。但是,与Maven提供的依赖项不同,在Gradle中只编译依赖项不包含在测试类路径中。

     

仅编译依赖项应分配给相关的源集' compileOnly'配置。

dependencies {
    compileOnly 'javax.servlet:servlet-api:2.5'
}

答案 1 :(得分:41)

我一直在使用的解决方案非常简单。您必须将以下代码添加到build.gradle文件中:

apply plugin: 'eclipse'  // Eclipse users only

configurations {
    provided
}

sourceSets {
    main.compileClasspath += configurations.provided
    test.compileClasspath += configurations.provided
    test.runtimeClasspath += configurations.provided
}

eclipse.classpath.plusConfigurations += configurations.provided  // Eclipse users only

如果您不是Eclipse用户(我不是),您实际上并不需要第一行和最后一行,正如您可能已经猜到的那样。

一旦添加了上述配置,您就可以在依赖项部分中添加提供的依赖项以及任何常规编译依赖项:

dependencies {
    compile group: 'org.springframework', name: 'spring-core', version: '3.2.6.RELEASE'

    provided group: 'javax.servlet', name: 'servlet-api', version:'2.5'
    provided group: 'javax.servlet.jsp', name: 'jsp-api', version:'2.1'
}

希望有所帮助。一段时间以来,它一直很适合我。

答案 2 :(得分:8)

Netflix现在是一个很棒的插件,gradle-extra-configurations-plugin。它提供providedoptional范围。不再需要手动管道,并且在向maven存储库发布时也会生成所需的元数据。

答案 3 :(得分:4)

演出有点晚了,使用gradle将.jar复制到libs文件夹,并在你的gradle文件中复制:

dependencies {
 ....
 provided files('libs/someLibrary')
 ....
}

答案 4 :(得分:2)

有一个prodeps插件,可为Gradle

添加其他可选和提供的依赖项配置
...
apply plugin: 'propdeps'
...
buildscript {
    repositories {
        maven { url 'http://repo.spring.io/plugins-release' }
    }
    dependencies {
        classpath 'org.springframework.build.gradle:propdeps-plugin:0.0.7'
    }
}
...
dependencies {
    ...
    provided('android:android:2.2_r3')
    ...
}
...