Skip to content
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

Maven Enforcer Rule itself is prone to dependency conflicts of aether library #1776

Open
suztomo opened this issue Nov 3, 2020 · 4 comments
Labels
bug Something isn't working p3

Comments

@suztomo
Copy link
Contributor

suztomo commented Nov 3, 2020

I tried to apply the linkage checker enforcer rule to the project when troubleshooting googleapis/java-spanner-jdbc#251 (comment), however the linkage checker failed:

[INFO] --- maven-enforcer-plugin:3.0.0-M3:enforce (enforce-linkage-checker) @ google-cloud-spanner-jdbc ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  27.293 s
[INFO] Finished at: 2020-11-03T11:00:01-05:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce (enforce-linkage-checker) on project google-cloud-spanner-jdbc: Execution enforce-linkage-checker of goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce failed: An API incompatibility was encountered while executing org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce: java.lang.IllegalAccessError: tried to access method org.eclipse.aether.util.ChecksumUtils.toHexString([B)Ljava/lang/String; from class org.eclipse.aether.connector.basic.ChecksumCalculator$Checksum
[ERROR] -----------------------------------------------------
[ERROR] realm =    plugin>org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3
[ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
[ERROR] urls[0] = file:/Users/suztomo/.m2/repository/org/apache/maven/plugins/maven-enforcer-plugin/3.0.0-M3/maven-enforcer-plugin-3.0.0-M3.jar
[ERROR] urls[1] = file:/Users/suztomo/.m2/repository/com/google/cloud/tools/linkage-checker-enforcer-rules/1.5.4/linkage-checker-enforcer-rules-1.5.4.jar
[ERROR] urls[2] = file:/Users/suztomo/.m2/repository/com/google/cloud/tools/dependencies/1.5.4/dependencies-1.5.4.jar
[ERROR] urls[3] = file:/Users/suztomo/.m2/repository/org/apache/bcel/bcel/6.5.0/bcel-6.5.0.jar
[ERROR] urls[4] = file:/Users/suztomo/.m2/repository/org/apache/maven/resolver/maven-resolver-transport-http/1.4.2/maven-resolver-transport-http-1.4.2.jar
[ERROR] urls[5] = file:/Users/suztomo/.m2/repository/org/apache/httpcomponents/httpcore/4.4.10/httpcore-4.4.10.jar
[ERROR] urls[6] = file:/Users/suztomo/.m2/repository/org/apache/maven/resolver/maven-resolver-transport-file/1.4.2/maven-resolver-transport-file-1.4.2.jar
[ERROR] urls[7] = file:/Users/suztomo/.m2/repository/org/apache/maven/resolver/maven-resolver-connector-basic/1.4.2/maven-resolver-connector-basic-1.4.2.jar
[ERROR] urls[8] = file:/Users/suztomo/.m2/repository/org/apache/httpcomponents/httpclient/4.5.12/httpclient-4.5.12.jar
[ERROR] urls[9] = file:/Users/suztomo/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar
[ERROR] urls[10] = file:/Users/suztomo/.m2/repository/org/relaxng/jing/20181222/jing-20181222.jar
[ERROR] urls[11] = file:/Users/suztomo/.m2/repository/net/sf/saxon/Saxon-HE/9.6.0-4/Saxon-HE-9.6.0-4.jar
[ERROR] urls[12] = file:/Users/suztomo/.m2/repository/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar
[ERROR] urls[13] = file:/Users/suztomo/.m2/repository/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar
[ERROR] urls[14] = file:/Users/suztomo/.m2/repository/isorelax/isorelax/20030108/isorelax-20030108.jar
[ERROR] urls[15] = file:/Users/suztomo/.m2/repository/commons-cli/commons-cli/1.4/commons-cli-1.4.jar
[ERROR] urls[16] = file:/Users/suztomo/.m2/repository/com/google/guava/guava/29.0-jre/guava-29.0-jre.jar
[ERROR] urls[17] = file:/Users/suztomo/.m2/repository/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar
[ERROR] urls[18] = file:/Users/suztomo/.m2/repository/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar
[ERROR] urls[19] = file:/Users/suztomo/.m2/repository/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar
[ERROR] urls[20] = file:/Users/suztomo/.m2/repository/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.jar
[ERROR] urls[21] = file:/Users/suztomo/.m2/repository/com/google/errorprone/error_prone_annotations/2.3.4/error_prone_annotations-2.3.4.jar
[ERROR] urls[22] = file:/Users/suztomo/.m2/repository/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar
[ERROR] urls[23] = file:/Users/suztomo/.m2/repository/org/codehaus/mojo/extra-enforcer-rules/1.3/extra-enforcer-rules-1.3.jar
[ERROR] urls[24] = file:/Users/suztomo/.m2/repository/org/apache/maven/shared/maven-dependency-tree/2.2/maven-dependency-tree-2.2.jar
[ERROR] urls[25] = file:/Users/suztomo/.m2/repository/org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.jar
[ERROR] urls[26] = file:/Users/suztomo/.m2/repository/junit/junit/4.11/junit-4.11.jar
[ERROR] urls[27] = file:/Users/suztomo/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
[ERROR] urls[28] = file:/Users/suztomo/.m2/repository/commons-codec/commons-codec/1.12/commons-codec-1.12.jar
[ERROR] urls[29] = file:/Users/suztomo/.m2/repository/org/apache/maven/shared/maven-common-artifact-filters/3.1.0/maven-common-artifact-filters-3.1.0.jar
[ERROR] urls[30] = file:/Users/suztomo/.m2/repository/org/apache/maven/shared/maven-shared-utils/3.1.0/maven-shared-utils-3.1.0.jar
[ERROR] urls[31] = file:/Users/suztomo/.m2/repository/commons-io/commons-io/2.5/commons-io-2.5.jar
[ERROR] urls[32] = file:/Users/suztomo/.m2/repository/org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.jar
[ERROR] urls[33] = file:/Users/suztomo/.m2/repository/org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7-noaop.jar
[ERROR] urls[34] = file:/Users/suztomo/.m2/repository/org/sonatype/aether/aether-util/1.7/aether-util-1.7.jar
[ERROR] urls[35] = file:/Users/suztomo/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar
[ERROR] urls[36] = file:/Users/suztomo/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.7.1/plexus-component-annotations-1.7.1.jar
[ERROR] urls[37] = file:/Users/suztomo/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
[ERROR] urls[38] = file:/Users/suztomo/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
[ERROR] urls[39] = file:/Users/suztomo/.m2/repository/org/codehaus/plexus/plexus-utils/3.3.0/plexus-utils-3.3.0.jar
[ERROR] urls[40] = file:/Users/suztomo/.m2/repository/org/apache/maven/enforcer/enforcer-api/3.0.0-M3/enforcer-api-3.0.0-M3.jar
[ERROR] urls[41] = file:/Users/suztomo/.m2/repository/org/apache/maven/enforcer/enforcer-rules/3.0.0-M3/enforcer-rules-3.0.0-M3.jar
[ERROR] urls[42] = file:/Users/suztomo/.m2/repository/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1.jar
[ERROR] urls[43] = file:/Users/suztomo/.m2/repository/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar
[ERROR] urls[44] = file:/Users/suztomo/.m2/repository/org/apache/maven/resolver/maven-resolver-util/1.4.1/maven-resolver-util-1.4.1.jar
[ERROR] Number of foreign imports: 1
[ERROR] import: Entry[import  from realm ClassRealm[project>com.google.cloud:google-cloud-spanner-jdbc:1.17.3-SNAPSHOT, parent: ClassRealm[maven.api, parent: null]]]
[ERROR] 
[ERROR] -----------------------------------------------------

Probably the same cause as #1091, but as it happened twice, we should better to document or show message for such situation.

@suztomo
Copy link
Contributor Author

suztomo commented Nov 3, 2020

Solved by explicitly declaring the dependency to org.codehaus.mojo:extra-enforcer-rules and add the following exclusion element:


+        <dependencies>
+          <dependency>
+            <groupId>com.google.cloud.tools</groupId>
+            <artifactId>linkage-checker-enforcer-rules</artifactId>
+            <version>1.5.4</version>
+          </dependency>
+          <dependency>
+            <groupId>org.codehaus.mojo</groupId>
+            <artifactId>extra-enforcer-rules</artifactId>
+            <version>1.3</version>
+            <exclusions>
+              <exclusion>
+                <groupId>org.eclipse.aether</groupId>
+                <artifactId>aether-util</artifactId>
+              </exclusion>
+            </exclusions>
+            <scope>compile</scope>
+          </dependency>
+        </dependencies>

@elharo
Copy link
Contributor

elharo commented Nov 3, 2020

In which file did you add this code?

@suztomo
Copy link
Contributor Author

suztomo commented Nov 3, 2020

@elharo
Copy link
Contributor

elharo commented Nov 3, 2020

  1. Can we move the aether dependency into the linkage checker?

  2. extra-enforcer-rules doesn't seem very active, but perhaps we can upgrade this there.

@elharo elharo changed the title LinkageChecker itself is prone to dependency conflicts of aether library Maven Enforcer Rule itself is prone to dependency conflicts of aether library Nov 6, 2020
@elharo elharo added bug Something isn't working p3 labels Jul 22, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working p3
Projects
None yet
Development

No branches or pull requests

2 participants