Подтвердить что ты не робот

Как использовать предоставленную область для jar файла в Gradle build?

Мне нужно использовать Amazon Maps и Amazon Messaging в моих приложениях.

С gradle мне не удалось добавить зависимости Amazon с "предоставленной" областью поскольку они должны быть:

JAR файл содержит заглушки для API карт Amazon. Он не содержит фактических реализаций классов API Карт, поэтому вы не должны компилировать JAR в свое приложение.

Ни один из решений, предоставляемых поддержкой Amazon, не работал для меня.

Если кому-то удалось использовать карты amazon или обмен сообщениями amazon с помощью gradle, поделитесь файлом build.gradle здесь.

4b9b3361

Ответ 1

Решение, которое я использовал, довольно просто. Вы должны добавить следующий код в свой файл 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

В 2.12 релизе Gradle, добавлен compileOnly, чтобы предоставить аналогичную функциональность provided. Существует разница в том, что происходит в тестовом классе. Вот соответствующие цитаты и фрагменты из примечаний к выпуску:

Теперь вы можете объявлять зависимости, которые будут использоваться только во время компиляции в сочетании с плагином Java. Компиляция только зависимостей используется только во время компиляции источника и не включается в пул классов среды выполнения или подвергается зависимым проектам. Такое поведение аналогично поведению "предоставленной" области, доступной в сборках на основе Maven. Однако, в отличие от Maven, предоставляемых зависимостями, компиляция только зависимостей в Gradle не включается в тестовый путь.

Компилировать только зависимости должны быть назначены для соответствующей конфигурации исходного кода "compileOnly".

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

Ответ 3

Теперь есть отличный плагин от Netflix, gradle-extra-configurations-plugin. Он предоставляет область provided и optional. Не требуется больше ручной сантехники, а также генерирует требуемые метаданные при публикации, например, в репозиторий maven.

Ответ 4

Немного поздно в шоу, используя gradle, вы скопируете .jar в папку libs и в свой gradle файл, который у вас есть:

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

Ответ 5

Существует плагин 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')
    ...
}
...