Soru Gradle build'te jar dosyası için sağlanan kapsam nasıl kullanılır?


Uygulamalarımda Amazon Haritalar ve Amazon Mesajlaşma kullanmam gerekiyor.

Gradle ile Amazon bağımlılıklarını "sağlanan" bir kapsamla eklemeyi başaramadım. olması gerektiği gibi :

JAR dosyası, Amazon Haritalar API'sinin saplama uygulamalarını içerir. Maps API sınıflarının gerçek uygulamalarını içermez, bu yüzden JAR'ı uygulamanıza derlememelisiniz.

Amazon desteği tarafından sağlanan çözümlerin hiçbiri işe yaramadı benim için.

Birisi amazon haritaları kullanmayı başardıysa veya Gracey ile mesajlaşmayı başardıysa, lütfen build.gradle dosyanızı burada paylaşın.


36
2017-09-11 10:36


Menşei


issues.gradle.org/browse/GRADLE-784 - Dori
@Benjamin Bir cevabı kabul ederseniz veya bu çözümlerin sizin için işe yaramadığını söylerseniz, bu hoş olurdu. - Michael Oryl
blog.ehrnhoefer.com/dev/2015/02/18/gradle-provided-scope.html - OhadR


Cevaplar:


İçinde 2.12 Gradle'ın bırakılması, compileOnly benzer işlevsellik vermek için eklendi provided kapsamı. Test sınıfında ne olduğu konusunda bir fark var. Yayınlama notlarından ilgili fiyat teklifi ve snippet:

Artık bağımlılıkların yalnızca derleme zamanında birlikte kullanılacakları bildirebilirsiniz. Java eklentisi. Derleme yalnızca bağımlılıklar yalnızca kaynak derleme sırasında kullanılır ve çalışma zamanı sınıf yoluna dahil edilmez veya bağımlı projelere maruz bırakılmaz. Bu davranış Maven tabanlı yapılarda bulunan 'sağlanan' kapsam ile benzerdir. Bununla birlikte, Maven'in bağımlılıklar sağladığı gibi, sadece derleme Bağımlılıkları test sınıf yoluna dahil edilmemiştir.

Derleme sadece bağımlılıkların ilgili kaynak kümesinin 'compileOnly' yapılandırmasına atanması gerekir.

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

47
2018-03-14 13:38



Mükemmel cevap. Tüm bu ek eylemler ve üçüncü taraf eklentileri olmadan ihtiyacım olanı yaptım. - shidzo
bu kesinlikle kabul edilen cevap olmalı - r00tandy
Evet, 2.12+ sürümü kullanıyorsanız, bu muhtemelen kabul edilen yanıt olmalıdır. Eğer daha büyük bir şeyi destekliyorsanız (1.12, MichaelOryl'in cevabı olanı). - Meower68
Ek bir bağımlılık testCompile gerçek için gerekli provided kabiliyet. - Jin Kwon


Kullandığım çözüm oldukça basit. Aşağıdaki kodu build.gradle dosyanıza eklemelisiniz:

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

Bir Eclipse kullanıcısı değilseniz (ben değilim), tahmin edebileceğiniz gibi, ilk ve son satırlara ihtiyacınız yoktur.

Yukarıdaki yapılandırma eklemeleri yapıldıktan sonra, basit bir bağımlılık bağımlılıklarının yanı sıra bağımlılık bölümünüzde sağlanan bağımlılığı ekleyebilirsiniz:

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

Umarım yardımcı olur. Bir süredir benim için gayet iyi çalışıyor.


41
2017-12-30 14:13



İntellij-idea kullanırsanız ve apply plugin: 'idea' eklemek: idea { module { scopes.PROVIDED.plus += [configurations.provided] } }  Bu fikir verilen sınıflarla doğru davranmaya zorlayacaktır. - Danny Dan
Projenin inşası hangi IDE'de çalıştığınıza bağlıdır? Aletleri kullanmalıyız, kullanmamalıyız diye düşündüm. Burada garip bir şey var ... - Mrusful


Netflix'ten artık harika bir eklenti var. gradle-ekstra yapılandırmaları-eklentisi. Bir sağlar provided ve optional kapsamı. Daha fazla manuel su tesisatı gerekmez ve ayrıca bir maven havuzuna gönderirken gerekli meta verileri üretir.


7
2017-09-26 12:07





Gösteriye biraz geç, notu kullanarak .jar dosyasını libs klasörüne ve not defterine kopyala:

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

4
2017-11-10 13:15



dosya ('something.jar') benim için çalışmadı ama dosyalar ('something.jar') yaptı - pho79
haklısın, en son sürümlerde değişiklik var gibi görünüyor, cevabımı güncelledim - Calin


Var prodeps Gradle için ek isteğe bağlı ve sağlanan bağımlılık yapılandırmaları ekleyen eklenti

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

1
2017-09-26 10:09