actions-on-google / actions-on-google-java

Java/Kotlin library for Actions on Google
Apache License 2.0
287 stars 39 forks source link

Dependency issue with GCP jars like cloud logging #37

Open abharku opened 4 years ago

abharku commented 4 years ago

This version is not compatible if we are using any GCP functionality within the action. I got following dependency conflict: Description Resource Path Location Type Could not resolve version conflict among [StarfishELK:StarfishELK:jar:0.0.1-SNAPSHOT -> com.google.cloud:google-cloud-logging:jar:1.98.0 -> com.google.cloud:google-cloud-core-grpc:jar:1.91.2 -> com.google.api:gax-grpc:jar:1.49.0 -> io.grpc:grpc-netty-shaded:jar:1.23.0 -> io.grpc:grpc-core:jar:[1.23.0,1.23.0], StarfishELK:StarfishELK:jar:0.0.1-SNAPSHOT -> com.google.cloud:google-cloud-logging:jar:1.98.0 -> com.google.cloud:google-cloud-core-grpc:jar:1.91.2 -> com.google.api:gax-grpc:jar:1.49.0 -> io.grpc:grpc-alts:jar:1.23.0 -> io.grpc:grpc-grpclb:jar:1.23.0 -> io.grpc:grpc-core:jar:[1.23.0,1.23.0], StarfishELK:StarfishELK:jar:0.0.1-SNAPSHOT -> com.google.cloud:google-cloud-logging:jar:1.98.0 -> com.google.cloud:google-cloud-core-grpc:jar:1.91.2 -> com.google.api:gax-grpc:jar:1.49.0 -> io.grpc:grpc-alts:jar:1.23.0 -> io.grpc:grpc-core:jar:[1.23.0,1.23.0], StarfishELK:StarfishELK:jar:0.0.1-SNAPSHOT -> com.google.cloud:google-cloud-logging:jar:1.98.0 -> com.google.cloud:google-cloud-core-grpc:jar:1.91.2 -> io.grpc:grpc-core:jar:1.24.0, StarfishELK:StarfishELK:jar:0.0.1-SNAPSHOT -> io.grpc:grpc-all:jar:1.23.0 -> io.grpc:grpc-core:jar:[1.23.0,1.23.0], StarfishELK:StarfishELK:jar:0.0.1-SNAPSHOT -> io.grpc:grpc-all:jar:1.23.0 -> io.grpc:grpc-netty:jar:1.23.0 -> io.grpc:grpc-core:jar:[1.23.0,1.23.0], StarfishELK:StarfishELK:jar:0.0.1-SNAPSHOT -> io.grpc:grpc-all:jar:1.23.0 -> io.grpc:grpc-okhttp:jar:1.23.0 -> io.grpc:grpc-core:jar:[1.23.0,1.23.0], StarfishELK:StarfishELK:jar:0.0.1-SNAPSHOT -> io.grpc:grpc-all:jar:1.23.0 -> io.grpc:grpc-testing:jar:1.23.0 -> io.grpc:grpc-core:jar:[1.23.0,1.23.0], com.starfish.utils:intent-parser:jar:1.0-SNAPSHOT -> com.google.cloud:google-cloud-datastore:jar:1.98.0 -> io.grpc:grpc-core:jar:1.24.0, com.google.actions:actions-on-google:jar:1.7.0 -> io.grpc:grpc-protobuf:jar:1.15.1 -> io.grpc:grpc-core:jar:1.15.1, com.google.actions:actions-on-google:jar:1.7.0 -> io.grpc:grpc-protobuf:jar:1.15.1 -> io.grpc:grpc-protobuf-lite:jar:1.15.1 -> io.grpc:grpc-core:jar:1.15.1, com.google.actions:actions-on-google:jar:1.7.0 -> io.grpc:grpc-stub:jar:1.15.1 -> io.grpc:grpc-core:jar:1.15.1, com.google.actions:actions-on-google:jar:1.7.0 -> io.grpc:grpc-auth:jar:1.15.1 -> io.grpc:grpc-core:jar:[1.15.1,1.15.1]]

org.eclipse.aether.collection.UnsolvableVersionConflictException: Could not resolve version conflict among [StarfishELK:StarfishELK:jar:0.0.1-SNAPSHOT -> com.google.cloud:google-cloud-logging:jar:1.98.0 -> com.google.cloud:google-cloud-core-grpc:jar:1.91.2 -> com.google.api:gax-grpc:jar:1.49.0 -> io.grpc:grpc-netty-shaded:jar:1.23.0 -> io.grpc:grpc-core:jar:[1.23.0,1.23.0], StarfishELK:StarfishELK:jar:0.0.1-SNAPSHOT -> com.google.cloud:google-cloud-logging:jar:1.98.0 -> com.google.cloud:google-cloud-core-grpc:jar:1.91.2 -> com.google.api:gax-grpc:jar:1.49.0 -> io.grpc:grpc-alts:jar:1.23.0 -> io.grpc:grpc-grpclb:jar:1.23.0 -> io.grpc:grpc-core:jar:[1.23.0,1.23.0], StarfishELK:StarfishELK:jar:0.0.1-SNAPSHOT -> com.google.cloud:google-cloud-logging:jar:1.98.0 -> com.google.cloud:google-cloud-core-grpc:jar:1.91.2 -> com.google.api:gax-grpc:jar:1.49.0 -> io.grpc:grpc-alts:jar:1.23.0 -> io.grpc:grpc-core:jar:[1.23.0,1.23.0], StarfishELK:StarfishELK:jar:0.0.1-SNAPSHOT -> com.google.cloud:google-cloud-logging:jar:1.98.0 -> com.google.cloud:google-cloud-core-grpc:jar:1.91.2 -> io.grpc:grpc-core:jar:1.24.0, StarfishELK:StarfishELK:jar:0.0.1-SNAPSHOT -> io.grpc:grpc-all:jar:1.23.0 -> io.grpc:grpc-core:jar:[1.23.0,1.23.0], StarfishELK:StarfishELK:jar:0.0.1-SNAPSHOT -> io.grpc:grpc-all:jar:1.23.0 -> io.grpc:grpc-netty:jar:1.23.0 -> io.grpc:grpc-core:jar:[1.23.0,1.23.0], StarfishELK:StarfishELK:jar:0.0.1-SNAPSHOT -> io.grpc:grpc-all:jar:1.23.0 -> io.grpc:grpc-okhttp:jar:1.23.0 -> io.grpc:grpc-core:jar:[1.23.0,1.23.0], StarfishELK:StarfishELK:jar:0.0.1-SNAPSHOT -> io.grpc:grpc-all:jar:1.23.0 -> io.grpc:grpc-testing:jar:1.23.0 -> io.grpc:grpc-core:jar:[1.23.0,1.23.0], com.starfish.utils:intent-parser:jar:1.0-SNAPSHOT -> com.google.cloud:google-cloud-datastore:jar:1.98.0 -> io.grpc:grpc-core:jar:1.24.0, com.google.actions:actions-on-google:jar:1.7.0 -> io.grpc:grpc-protobuf:jar:1.15.1 -> io.grpc:grpc-core:jar:1.15.1, com.google.actions:actions-on-google:jar:1.7.0 -> io.grpc:grpc-protobuf:jar:1.15.1 -> io.grpc:grpc-protobuf-lite:jar:1.15.1 -> io.grpc:grpc-core:jar:1.15.1, com.google.actions:actions-on-google:jar:1.7.0 -> io.grpc:grpc-stub:jar:1.15.1 -> io.grpc:grpc-core:jar:1.15.1, com.google.actions:actions-on-google:jar:1.7.0 -> io.grpc:grpc-auth:jar:1.15.1 -> io.grpc:grpc-core:jar:[1.15.1,1.15.1]] at org.eclipse.aether.util.graph.transformer.NearestVersionSelector.newFailure(NearestVersionSelector.java:159) at org.eclipse.aether.util.graph.transformer.NearestVersionSelector.backtrack(NearestVersionSelector.java:120) at org.eclipse.aether.util.graph.transformer.NearestVersionSelector.selectVersion(NearestVersionSelector.java:93) at org.eclipse.aether.util.graph.transformer.ConflictResolver.transformGraph(ConflictResolver.java:181) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:266) at org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies(DefaultRepositorySystem.java:279) at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:169) at org.apache.maven.project.DefaultProjectBuilder.resolveDependencies(DefaultProjectBuilder.java:225) at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:198) at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:122) at org.eclipse.m2e.core.internal.embedder.MavenImpl.readMavenProject(MavenImpl.java:630) at org.eclipse.m2e.core.internal.project.registry.DefaultMavenDependencyResolver.resolveProjectDependencies(DefaultMavenDependencyResolver.java:63) at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refreshPhase2(ProjectRegistryManager.java:551) at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.lambda$2(ProjectRegistryManager.java:515) at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:177) at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:151) at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:513) at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:365) at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:312) at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.getProjectFacade(MavenBuilder.java:155) at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod$1.call(MavenBuilder.java:90) at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:177) at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:151) at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:99) at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.execute(MavenBuilder.java:87) at org.eclipse.m2e.core.internal.builder.MavenBuilder.build(MavenBuilder.java:201) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:833) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:220) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:263) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:316) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:319) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:371) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:392) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:154) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:244) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) pom.xml /My-MP-Bean line 1 Maven Dependency Problem

I have resolved it for now by excluding it like this:

`

com.google.actions
<artifactId>actions-on-google</artifactId>
<version>1.7.0</version>
<exclusions>
        <exclusion>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-netty-shaded</artifactId>
        </exclusion>
        <exclusion>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-protobuf</artifactId>
        </exclusion>
        <exclusion>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-auth</artifactId>
        </exclusion>
    </exclusions>

`

Fleker commented 4 years ago

So you're using a different set of gRPC APIs in your application?

abharku commented 4 years ago

@Fleker I am not using any gRPC API directly within my application but we are using GCP cloud logging which in turn requires gRPC API. The version of cloud logging has different dependent gRPC API then what you have in action sdk dependency. This means we can only work by excluding one or the another. Good thing we are only using action sdk java for building responses so there is no conflicts related to IO.

Ideally I would assume action sdk build should be on parallel line to cloud API java builds. So that we can write and use other GCP cloud API's along with our actions.

cbeaujoin commented 4 years ago

Hi, This is the same kind of issue that #29

Fleker commented 4 years ago

At the moment we are not aligning with Cloud Logging dependencies, so it is possible to occasionally run into conflicts, like what happened in #29.