Skip to content

The @packaging is ignored by the Android resolver #174

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
sp-jordi-vilalta opened this issue Dec 19, 2018 · 2 comments
Closed

The @packaging is ignored by the Android resolver #174

sp-jordi-vilalta opened this issue Dec 19, 2018 · 2 comments

Comments

@sp-jordi-vilalta
Copy link

sp-jordi-vilalta commented Dec 19, 2018

Hi,

In some cases I want to specify the packaging (like @jar) in order to skip the POM file processing. This may be because I don't want its dependencies to be automatically downloaded, or because the POM file is just invalid.

While looking at older issues (like this: #128) it seems like at some point the process failed to download a package if the specified packaging didn't exist (which makes sense to me). Now it seems to always download the POM file, ignoring the specified packaging, and then it downloads the packaging specified in the POM (and it processes all the dependencies).

Trying to replicate the issue from #128 I get this result:

$ ./gradlew -b PlayServicesResolver.scripts.download_artifacts.gradle -PTARGET_DIR=. -PPACKAGES_TO_COPY=com.google.android.gms:play-services-tasks:15.0.1@jar

> Configure project :
MAVEN_REPOS: name=maven url=https://maven.google.com
MAVEN_REPOS: name=MavenLocal url=file:/Users/jvilalta/.m2/repository
MAVEN_REPOS: name=BintrayJCenter url=https://jcenter.bintray.com/
MAVEN_REPOS: name=MavenRepo url=https://repo.maven.apache.org/maven2/
PACKAGES_TO_COPY: com.google.android.gms:play-services-tasks:15.0.1
TARGET_DIR: /Users/jvilalta/PlayServicesResolverGradle/.
Resolution attempt 1: packages [com.google.android.gms:play-services-tasks:15.0.1]
Resolution attempt: 1, conflicts detected: false, updated packages: false
Resolution attempt 2: packages [com.google.android.gms:play-services-tasks:15.0.1]
version locked packages: [com.android.support:support-annotations:26.1.0, com.android.support:support-compat:26.1.0, com.android.support:support-core-ui:26.1.0, com.android.support:support-core-utils:26.1.0, com.android.support:support-fragment:26.1.0, com.android.support:support-media-compat:26.1.0, com.android.support:support-v4:26.1.0]
non-version locked packages: [com.google.android.gms:play-services-tasks:15.0.1]

> Task :copyPackages
Copied artifacts:
android.arch.core.common-1.0.0.jar
android.arch.lifecycle.common-1.0.0.jar
android.arch.lifecycle.runtime-1.0.0.aar
com.android.support.support-annotations-26.1.0.jar
com.android.support.support-compat-26.1.0.aar
com.android.support.support-core-ui-26.1.0.aar
com.android.support.support-core-utils-26.1.0.aar
com.android.support.support-fragment-26.1.0.aar
com.android.support.support-media-compat-26.1.0.aar
com.android.support.support-v4-26.1.0.aar
com.google.android.gms.play-services-basement-15.0.1.aar
com.google.android.gms.play-services-tasks-15.0.1.aar


BUILD SUCCESSFUL in 0s
13 actionable tasks: 13 executed

I would expect this to fail because I specified @jar and the jar file doesn't exist for this package, but it downloads the .aar file instead. Is this an expected behavior? Is there a way to make it behave as I expected? (like in the old releases)

Thanks!

@stewartmiles
Copy link
Contributor

AFAIK the only place I messed with the packaging was to fallback to srcaar when "aar" is specified as the packaging.
https://github.com/googlesamples/unity-jar-resolver/blob/master/source/PlayServicesResolver/scripts/download_artifacts.gradle#L1367

@sp-jordi-vilalta
Copy link
Author

I did some tests and it seems fff89b8#diff-c0119d524241ce57b8198e4bb14da162 introduced a behavior change.

Requesting a non-existing @jar with 858ade1 fails (as I expected):

$ ./gradlew -b ./download_artifacts.gradle-858ade165fa36f23302135ef62fdc03ac4ac8934-ok.txt -PTARGET_DIR=. -PPACKAGES_TO_COPY=com.google.android.gms:play-services-tasks:15.0.1@jar

> Configure project :
Ignoring resolution failure org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration ':userPackagesToQuery1'. ([org.gradle.internal.resolve.ArtifactNotFoundException: Could not find play-services-tasks.jar (com.google.android.gms:play-services-tasks:15.0.1).
Searched in the following locations:
    https://maven.google.com/com/google/android/gms/play-services-tasks/15.0.1/play-services-tasks-15.0.1.jar]) for packages [com.google.android.gms:play-services-tasks:15.0.1@jar]

FAILURE: Build failed with an exception.

* Where:
Build file '/Users/jvilalta/Downloads/googleDeps/download_artifacts.gradle-858ade165fa36f23302135ef62fdc03ac4ac8934-ok.txt' line: 1129

* What went wrong:
A problem occurred evaluating root project 'googleDeps'.
> Could not resolve all dependencies for configuration ':userPackagesToQuery1'.
   > Could not find play-services-tasks.jar (com.google.android.gms:play-services-tasks:15.0.1).
     Searched in the following locations:
         https://maven.google.com/com/google/android/gms/play-services-tasks/15.0.1/play-services-tasks-15.0.1.jar

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 0s

Requesting without the packaging with 858ade1 works (as expected):

$ ./gradlew -b ./download_artifacts.gradle-858ade165fa36f23302135ef62fdc03ac4ac8934-ok.txt -PTARGET_DIR=. -PPACKAGES_TO_COPY=com.google.android.gms:play-services-tasks:15.0.1

> Task :copyPackages
Copied artifacts:
android.arch.core.common-1.0.0.jar
android.arch.lifecycle.common-1.0.0.jar
android.arch.lifecycle.runtime-1.0.0.aar
com.android.support.support-annotations-26.1.0.jar
com.android.support.support-compat-26.1.0.aar
com.android.support.support-core-ui-26.1.0.aar
com.android.support.support-core-utils-26.1.0.aar
com.android.support.support-fragment-26.1.0.aar
com.android.support.support-media-compat-26.1.0.aar
com.android.support.support-v4-26.1.0.aar
com.google.android.gms.play-services-basement-15.0.1.aar
com.google.android.gms.play-services-tasks-15.0.1.aar


BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed

Requesting a non-existing @jar with fff89b8 works (I would expect it to fail):

$ ./gradlew -b ./download_artifacts.gradle-fff89b8e0ce61f7af37561ba95d74ccb8416c3c4-fail.txt -PTARGET_DIR=. -PPACKAGES_TO_COPY=com.google.android.gms:play-services-tasks:15.0.1@jar

> Configure project :
MAVEN_REPOS: name=maven url=https://maven.google.com
MAVEN_REPOS: name=MavenLocal url=file:/Users/jvilalta/.m2/repository
MAVEN_REPOS: name=BintrayJCenter url=https://jcenter.bintray.com/
MAVEN_REPOS: name=MavenRepo url=https://repo.maven.apache.org/maven2/
PACKAGES_TO_COPY: com.google.android.gms:play-services-tasks:15.0.1
TARGET_DIR: /Users/jvilalta/Downloads/googleDeps/.
Resolution attempt 1: packages [com.google.android.gms:play-services-tasks:15.0.1]
Resolution attempt: 1, conflicts detected: false, updated packages: true
version locked packages: [com.android.support:support-annotations:26.1.0, com.android.support:support-compat:26.1.0, com.android.support:support-core-ui:26.1.0, com.android.support:support-core-utils:26.1.0, com.android.support:support-fragment:26.1.0, com.android.support:support-media-compat:26.1.0, com.android.support:support-v4:26.1.0]
non-version locked packages: [com.google.android.gms:play-services-tasks:15.0.1]

> Task :copyPackages
Copied artifacts:
android.arch.core.common-1.0.0.jar
android.arch.lifecycle.common-1.0.0.jar
android.arch.lifecycle.runtime-1.0.0.aar
com.android.support.support-annotations-26.1.0.jar
com.android.support.support-compat-26.1.0.aar
com.android.support.support-core-ui-26.1.0.aar
com.android.support.support-core-utils-26.1.0.aar
com.android.support.support-fragment-26.1.0.aar
com.android.support.support-media-compat-26.1.0.aar
com.android.support.support-v4-26.1.0.aar
com.google.android.gms.play-services-basement-15.0.1.aar
com.google.android.gms.play-services-tasks-15.0.1.aar


BUILD SUCCESSFUL in 1s
13 actionable tasks: 13 executed

Requesting without the packaging with fff89b8 works (as expected):

$ ./gradlew -b ./download_artifacts.gradle-fff89b8e0ce61f7af37561ba95d74ccb8416c3c4-fail.txt -PTARGET_DIR=. -PPACKAGES_TO_COPY=com.google.android.gms:play-services-tasks:15.0.1

> Configure project :
MAVEN_REPOS: name=maven url=https://maven.google.com
MAVEN_REPOS: name=MavenLocal url=file:/Users/jvilalta/.m2/repository
MAVEN_REPOS: name=BintrayJCenter url=https://jcenter.bintray.com/
MAVEN_REPOS: name=MavenRepo url=https://repo.maven.apache.org/maven2/
PACKAGES_TO_COPY: com.google.android.gms:play-services-tasks:15.0.1
TARGET_DIR: /Users/jvilalta/Downloads/googleDeps/.
Resolution attempt 1: packages [com.google.android.gms:play-services-tasks:15.0.1]
Resolution attempt: 1, conflicts detected: false, updated packages: true
version locked packages: [com.android.support:support-annotations:26.1.0, com.android.support:support-compat:26.1.0, com.android.support:support-core-ui:26.1.0, com.android.support:support-core-utils:26.1.0, com.android.support:support-fragment:26.1.0, com.android.support:support-media-compat:26.1.0, com.android.support:support-v4:26.1.0]
non-version locked packages: [com.google.android.gms:play-services-tasks:15.0.1]

> Task :copyPackages
Copied artifacts:
android.arch.core.common-1.0.0.jar
android.arch.lifecycle.common-1.0.0.jar
android.arch.lifecycle.runtime-1.0.0.aar
com.android.support.support-annotations-26.1.0.jar
com.android.support.support-compat-26.1.0.aar
com.android.support.support-core-ui-26.1.0.aar
com.android.support.support-core-utils-26.1.0.aar
com.android.support.support-fragment-26.1.0.aar
com.android.support.support-media-compat-26.1.0.aar
com.android.support.support-v4-26.1.0.aar
com.google.android.gms.play-services-basement-15.0.1.aar
com.google.android.gms.play-services-tasks-15.0.1.aar


BUILD SUCCESSFUL in 1s
13 actionable tasks: 13 executed

It seems to me like the @jar part is lost (maybe while preprocessing the version number?), as it doesn't appear in the following lines:

PACKAGES_TO_COPY: com.google.android.gms:play-services-tasks:15.0.1
Resolution attempt 1: packages [com.google.android.gms:play-services-tasks:15.0.1]

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants