How to use provided scope for jar file in Gradle build?

后端 未结 5 765
情深已故
情深已故 2020-12-03 00:49

I need to use Amazon Maps and Amazon Messaging in my apps.

With gradle, I did not succeed in adding the Amazon dependencies with a \"provided\" scope as they need to

相关标签:
5条回答
  • 2020-12-03 01:21

    There is a prodeps plugin which adds additional optional and provided dependency configurations for 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')
        ...
    }
    ...
    
    0 讨论(0)
  • 2020-12-03 01:30

    There's now a great plugin from Netflix, gradle-extra-configurations-plugin. It provides a provided and optional scope. No more manual plumbing necessary and also generates the required metadata when pubishing e.g to a maven repository.

    0 讨论(0)
  • 2020-12-03 01:31

    The solution that I've been using is pretty simple. You must add the following code to your build.gradle file:

    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
    

    If you are not an Eclipse user (I'm not), you don't actually need the first and last lines, as you might have guessed.

    Once the above configuration additions are in, you can then simply add a provided dependency in your dependencies section alongside of any regular compile dependencies:

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

    Hope that helps. It's been working quite well for me for some time.

    0 讨论(0)
  • 2020-12-03 01:34

    In the 2.12 release of Gradle, compileOnly was added to give similar functionality to provided scope. There is a difference in what happens in the test classpath. Here is relevant quote and snippet from the release notes:

    You can now declare dependencies to be used only at compile time in conjunction with the Java plugin. Compile only dependencies are used only during source compilation and are not included in the runtime classpath or exposed to dependent projects. This behavior is similar to that of the 'provided' scope available in Maven based builds. However, unlike Maven provided dependencies, compile only dependencies in Gradle are not included on the test classpath.

    Compile only dependencies should be assigned to the relevant source set's 'compileOnly' configuration.

    dependencies {
        compileOnly 'javax.servlet:servlet-api:2.5'
    }
    
    0 讨论(0)
  • 2020-12-03 01:36

    A little late to the show, using gradle you copy the .jar to the libs folder and in your gradle file you have:

    dependencies {
     ....
     provided files('libs/someLibrary')
     ....
    }
    
    0 讨论(0)
提交回复
热议问题