Skip to content

Duplicated com.google classes #145

@harti2006

Description

@harti2006

Issue

The most recent version of this library compiles and includes some extra classes, originally coming from Google proto definitions. Those classes conflict with existing ones of the proto-google-common-protos library.

Affected version

1.4.1

Context

Output of the duplicate-finder maven plugin

[INFO] --- duplicate-finder:2.0.1:check (com.gropyus.tiles_duplicate-finder_0.14.121__default) @ authz-api ---
[INFO] Checking compile classpath
[INFO] Checking runtime classpath
[INFO] Checking test classpath
[WARNING] Found duplicate and different classes in [com.authzed.api:authzed:1.4.1, com.google.api.grpc:proto-google-common-protos:2.61.2]:
[WARNING]   com.google.api.AnnotationsProto
[WARNING]   com.google.api.CustomHttpPattern
[WARNING]   com.google.api.Http
[WARNING]   com.google.api.HttpProto
[WARNING]   com.google.api.HttpRule
[WARNING]   com.google.rpc.Status
[WARNING]   com.google.rpc.StatusProto
[WARNING] Found duplicate classes/resources in compile classpath.
[WARNING] Found duplicate and different classes in [com.authzed.api:authzed:1.4.1, com.google.api.grpc:proto-google-common-protos:2.61.2]:
[WARNING]   com.google.api.AnnotationsProto
[WARNING]   com.google.api.CustomHttpPattern
[WARNING]   com.google.api.Http
[WARNING]   com.google.api.HttpProto
[WARNING]   com.google.api.HttpRule
[WARNING]   com.google.rpc.Status
[WARNING]   com.google.rpc.StatusProto
[WARNING] Found duplicate classes/resources in runtime classpath.
[WARNING] Found duplicate and different classes in [com.authzed.api:authzed:1.4.1, com.google.api.grpc:proto-google-common-protos:2.61.2]:
[WARNING]   com.google.api.AnnotationsProto
[WARNING]   com.google.api.CustomHttpPattern
[WARNING]   com.google.api.Http
[WARNING]   com.google.api.HttpProto
[WARNING]   com.google.api.HttpRule
[WARNING]   com.google.rpc.Status
[WARNING]   com.google.rpc.StatusProto
[WARNING] Found duplicate classes/resources in test classpath.

Output of mvn dependency:tree -Dverbose=true

com.google.api.grpc:proto-google-common-protos is a transitive dependency of grpc-protobuf:

[INFO] --- dependency:3.7.0:tree (default-cli) @ test ---
[INFO] test:test:jar:0.0.1
[INFO] +- com.authzed.api:authzed:jar:1.4.1:compile
[INFO] |  +- com.google.protobuf:protobuf-java:jar:4.31.1:compile
[INFO] |  +- io.grpc:grpc-protobuf:jar:1.73.0:runtime
[INFO] |  |  +- (io.grpc:grpc-api:jar:1.73.0:runtime - omitted for conflict with 1.72.0)
[INFO] |  |  +- (com.google.code.findbugs:jsr305:jar:3.0.2:runtime - omitted for duplicate)
[INFO] |  |  +- com.google.api.grpc:proto-google-common-protos:jar:2.51.0:runtime
[INFO] |  |  +- (com.google.guava:guava:jar:33.3.1-android:runtime - omitted for duplicate)
[INFO] |  |  \- io.grpc:grpc-protobuf-lite:jar:1.73.0:runtime
[INFO] |  |     +- (io.grpc:grpc-api:jar:1.73.0:runtime - omitted for conflict with 1.72.0)
[INFO] |  |     +- (com.google.code.findbugs:jsr305:jar:3.0.2:runtime - omitted for duplicate)
[INFO] |  |     \- (com.google.guava:guava:jar:33.3.1-android:runtime - omitted for duplicate)

Reproduce

Here is a minimal POM file, with the configuration taken from your README + the duplicate-finder-maven-plugin.
Run "mvn clean verify" to see the error.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>test</groupId>
    <artifactId>test</artifactId>
    <version>0.0.1</version>

    <dependencies>
        <dependency>
            <groupId>com.authzed.api</groupId>
            <artifactId>authzed</artifactId>
            <version>1.4.1</version>
        </dependency>
        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-api</artifactId>
            <version>1.73.0</version>
        </dependency>
        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-stub</artifactId>
            <version>1.73.0</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.basepom.maven</groupId>
                <artifactId>duplicate-finder-maven-plugin</artifactId>
                <version>2.0.1</version>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                        <configuration>
                            <failBuildInCaseOfDifferentContentConflict>true</failBuildInCaseOfDifferentContentConflict>
                            <failBuildInCaseOfEqualContentConflict>false</failBuildInCaseOfEqualContentConflict>
                            <ignoredClassPatterns>
                                <ignoredClassPattern>.*\.module-info</ignoredClassPattern>
                            </ignoredClassPatterns>
                            <ignoredResourcePatterns>
                                <ignoredResourcePattern>.*</ignoredResourcePattern>
                            </ignoredResourcePatterns>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

Expected behavior

The JAR of com.authzed.api:authzed only includes "com.authzed" classes, as it was back in version 1.3.x.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions