Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency...
Transcript of Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency...
![Page 1: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/1.jpg)
at#bedcon
Gradle2.0andbeyondlatestefforts,currentstatus&roadmap
![Page 2: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/2.jpg)
at#bedcon
RenéGröschkePrincipalEngineer@GradleInc.
@breskeby
breskeby
![Page 3: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/3.jpg)
at#bedcon
Gradleinanutshellcompletelyopensource
apache2licensed
drivenbyGradleInc.
![Page 4: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/4.jpg)
at#bedcon
Gradleinanutshell
![Page 5: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/5.jpg)
at#bedcon
Gradleinanutshell
![Page 6: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/6.jpg)
at#bedcon
Gradleinanutshell
![Page 7: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/7.jpg)
at#bedcon
GradleinanutshellAsimplejavaproject
apply plugin:"java"
version = file("version.txt").text
repositories { jcenter()}
dependencies { testCompile "junit:junit:4.+"}
task printVersion << { println "We're using - version '$version'!" }
![Page 8: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/8.jpg)
at#bedcon
Gradle2.0Released1stJuly2014
![Page 9: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/9.jpg)
at#bedcon
Gradle2.7Released14thSeptember2015
![Page 10: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/10.jpg)
at#bedcon
Let’stakeacloserlookonPluginPortal
PlaySupport
GradleTestKit
EvenbetterDependencyManagement
NativeBuildSupportimprovements
EnhancedToolingAPI
![Page 11: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/11.jpg)
at#bedcon
PluginPortal
![Page 12: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/12.jpg)
at#bedcon
PluginPortalII
![Page 13: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/13.jpg)
at#bedcon
PlaySupportDEMO
![Page 14: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/14.jpg)
at#bedcon
ContinousMode> gralde build -t
![Page 15: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/15.jpg)
at#bedcon
GradleTestKitFunctionaltestingofyourbuildlogic
def setup() { buildFile = testProjectDir.newFile('build.gradle')}
def "hello world task prints hello world"() { given: buildFile << """ task helloWorld { doLast { println 'Hello world!' } } """
when: def result = GradleRunner.create() .withProjectDir(testProjectDir.root) .withArguments('helloWorld') .build()
then: result.standardOutput.contains('Hello world!') result.task(":helloWorld").outcome == SUCCESS}
![Page 16: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/16.jpg)
at#bedcon
DependencyManagement
![Page 17: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/17.jpg)
at#bedcon
DependencyResolveRulesForcingconsistentversionforagroupoflibraries
configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> if (details.requested.group == 'org.gradle') { details.useVersion '2.7' } }}
![Page 18: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/18.jpg)
at#bedcon
DependencyResolveRulesUsingacustomversioningscheme
configurations.all { resolutionStrategy { eachDependency { DependencyResolveDetails d -> if (d.requested.version == 'default') { def version = findDefaultVersion(d.requested.group, d.requested.name) d.useVersion version } } }}
Object findDefaultVersion(String group, String name) { // some custom logic that resolves the default // version into a specific version "1.0"}
![Page 19: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/19.jpg)
at#bedcon
DependencyResolveRulesChangingdependencygroupand/ornameattheresolution
configurations.all { resolutionStrategy { eachDependency { DependencyResolveDetails details -> if (details.requested.name == 'groovy-all') { //prefer 'groovy' over 'groovy-all': details.useTarget(group: details.requested.group, name: 'groovy', version: details.requested.version) } if (details.requested.name == 'log4j') { //prefer 'log4j-over-slf4j' over 'log4j', details.useTarget "org.slf4j:log4j-over-slf4j:1.7.10" } } }}
![Page 20: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/20.jpg)
at#bedcon
ComponentSelectionRulesdependencies { compile 'org.slf4j:slf4j-api:+' testCompile 'junit:junit:4.11'}
configurations { all { resolutionStrategy { componentSelection { withModule("org.slf4j:slf4j-api") { selection -> if(selection.candidate.version == "1.7.10") { selection.reject("known buggy version") } } } } }}
![Page 21: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/21.jpg)
at#bedcon
ArtifactQueryApitask resolveMavenPomFiles << { def componentIds = configurations.compile.incoming.resolutionResult.allDependencies.collect { it.selected.id }
def result = dependencies.createArtifactResolutionQuery() .forComponents(componentIds) .withArtifacts(MavenModule, MavenPomArtifact) .execute()
for(component in result.resolvedComponents) { component.getArtifacts(MavenPomArtifact).each { def pom = new XmlSlurper().parse(it.file) println pom.url } }}
![Page 22: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/22.jpg)
at#bedcon
DependencySubstitutionAllowselasticdependencies
configurations.all { resolutionStrategy.dependencySubstitution { substitute project(":api") with module("org.utils:api:1.3") }}
![Page 23: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/23.jpg)
at#bedcon
BuildshipEclipseplugindevelopedfromscratchbyGradleInc.
Partoftheeclipsefoundation
Wejustleftincubatorstatuslastweek
Shippedaspartofthemars.1release(25.09.2015)
![Page 24: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/24.jpg)
at#bedcon
BuildshipDemo
![Page 25: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/25.jpg)
at#bedcon
CurrentfocusNewGradlemodel
Dependencymanagement
Betterdomainmodelling
![Page 26: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/26.jpg)
at#bedcon
Dependencymanagement
![Page 27: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/27.jpg)
at#bedcon
Dependencymanagementtodealwithdependencieswehave:
group,name,version
classifier,customivyconfigurations
![Page 28: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/28.jpg)
at#bedcon
Dependencymanagementtodealwithdependencieswehave:
group,name,version
classifier,customivyconfigurations
butweneedtodealwith:
java,groovy,scalaversions
android,nativetargetplatforms,allkindofjavascript
![Page 29: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/29.jpg)
at#bedcon
Dependencymanagement
![Page 30: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/30.jpg)
at#bedcon
DependencymanagementAllowvariantawaredependencymanagement
![Page 31: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/31.jpg)
at#bedcon
DependencymanagementAllowvariantawaredependencymanagement
Supportarbitrarydimensions+custommetadata
![Page 32: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/32.jpg)
at#bedcon
BetterdomainmodellingDomainmodellingisGradle’sstrength.
Wewantittobeevenbetter.
![Page 33: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/33.jpg)
at#bedcon
BetterdomainmodellingDomainmodellingisGradle’sstrength.
Wewantittobeevenbetter.
Strongermodeling↪TheJARisnotthetaskthatcreatesit.
Cleanermodeling↪Avoidmixingexecutionconcernsintothedatamodel.
Collaborativemodeling↪IknowhowtodosomethingtoJARs.
Comprehensiblemodels↪WhoiscontributingtothecontentsofthisJAR?
![Page 34: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/34.jpg)
at#bedcon
AnewGradlemodel
![Page 35: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/35.jpg)
at#bedcon
Thecurrentmodelconfiguration➞execution
![Page 36: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/36.jpg)
at#bedcon
Thecurrentmodelconfiguration➞execution
configuration:
input=buildlogic
output=buildmodel
![Page 37: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/37.jpg)
at#bedcon
Thecurrentmodelconfiguration➞execution
configuration:
input=buildlogic
output=buildmodel
execution:
input=buildmodel
output=buildartifacts
![Page 38: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/38.jpg)
at#bedcon
Limitationsofthecurrentmodel
implementationofdeclarativebuildapiishard
doneintheimperativeway
eagerness
lazyness
hooks
scaling
![Page 39: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/39.jpg)
at#bedcon
ToohardForbuildengineersandbuildusers.
Wecandobetter.
![Page 40: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/40.jpg)
at#bedcon
ThenewGradlemodelAnewapproachtotheconfigurationphase.
Really,thesamesolutionforthe"executionphase"appliedtoconfiguration.
Agraphofdependentfunctions
Aninterpretabledatamodel
![Page 41: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/41.jpg)
at#bedcon
ThenewGradlemodelIEnterRuleSource
class PersonRules extends RuleSource { @Model void person(Person p) {}
@Mutate void setFirstName(Person p) { p.firstName = "John" }
@Mutate void createHelloTask(ModelMap<Task> tasks, Person p) { tasks.create("hello") { doLast { println "Hello $p.firstName $p.lastName!" } } }}
![Page 42: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/42.jpg)
at#bedcon
ThenewGradlemodelIIthebuildscript
apply plugin: PersonRules
model { person { lastName = "Smith" }}
![Page 43: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/43.jpg)
at#bedcon
ThenewGradlemodelIIIAndroidexperimentalplugin
model { android { compileSdkVersion = 22 buildToolsVersion = "22.0.1"
defaultConfig.with { applicationId = "com.example.user.myapplication" minSdkVersion.apiLevel = 15 targetSdkVersion.apiLevel = 22 versionCode = 1 versionName = "1.0" } }}
![Page 44: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/44.jpg)
at#bedcon
ThenewGradlemodelIVasanenablerfor
buildmuchfasterandmorememoryefficient
justconfigurewhatisrequired
allowfundamentalparallization
providebetterdiagnostics
reusecachedconfiguration
…
![Page 45: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/45.jpg)
at#bedcon
Gradle3.0
![Page 46: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/46.jpg)
at#bedcon
otherfutureplansjigsawsupport
shareddistributedcache
nextlevelnativebuildsupport
moredaemonutilisation
continuedtoolingimprovements
![Page 47: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/47.jpg)
at#bedcon
Linksandpointershttps://docs.gradle.org/current/userguide/new_model.html
http://gradle.org/roadmap
http://discuss.gradle.org/c/roadmap
![Page 48: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/48.jpg)
at#bedcon
Q&A
![Page 49: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/49.jpg)
at#bedcon
thanks!
![Page 50: Gradle 2.0 and beyond - Berlin Expert Daysat #bedcon Dependency Resolve Rules Changing dependency group and/or name at the resolution configurations.all {resolutionStrategy {eachDependency](https://reader030.fdocuments.net/reader030/viewer/2022040609/5eca7cb2cb1e5a2e1e633f8f/html5/thumbnails/50.jpg)
at#bedcon
TODOpdfexport→decktape.js
header/footer
makeasciidoctorofflineavailable