Skip to content

Instantly share code, notes, and snippets.

@n-belokopytov
Last active December 6, 2023 08:35
Show Gist options
  • Save n-belokopytov/d44949590748b096c1a497008b761d04 to your computer and use it in GitHub Desktop.
Save n-belokopytov/d44949590748b096c1a497008b761d04 to your computer and use it in GitHub Desktop.
Gradle script that generates a task to copy all build variant's dependencies to a certain directory for use with Nexus IQ Server. It copies exploded AARs too, renaming the classes.jar file into "<aar_dependency_name>.jar".
apply plugin: 'com.android.application'
android.applicationVariants.all { variant ->
task "copyDependencies${variant.name.capitalize()}"() {
outputs.upToDateWhen { false }
doLast {
println "Executing copyDependencies${variant.name.capitalize()}"
variant.getCompileClasspath().each { fileDependency ->
def sourcePath = fileDependency.absolutePath
def destinationPath = project.projectDir.path + "/build/dependencies/${variant.name}/"
println "Copying dependency:"
println sourcePath
//The monstrous regex that gets the name of the lib from it’s exploded .aar path
def dependencyName
if (sourcePath.contains("classes.jar")) {
def dependencyNameRegexResult = (sourcePath =~ /.*\/(.*)\.aar\/.*\/jars\/classes\.jar/)
if (dependencyNameRegexResult.size() > 0) {
dependencyName = dependencyNameRegexResult[0][1]
println "Exploded AAR found : ${dependencyName}"
}
}
copy {
from sourcePath
into destinationPath
rename {String filename ->
if (filename.contains("classes.jar") && dependencyName != null) {
dependencyName = "${dependencyName}.jar"
println "Renaming dependency file to : ${dependencyName}"
return dependencyName
}
return filename
}
}
}
}
}
}
@git4pl
Copy link

git4pl commented Sep 14, 2021

thanks for your script. but i wonder how to get the dependencies in my custom AS plugin. Is there any gradle APIs for Idea Plugin developing? i have googled a lot but got nothing i want. Hope you can help me.

@n-belokopytov
Copy link
Author

@git4pl sorry, can't help you bud. Maybe you could look for a Slack community of JetBrains or Gradle - there should be people who can help you. I also couldn't find any documentation on the implemented methods of AS Gradle Plugin.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment