Doroszlai, Attila created AMBARI-21701: ------------------------------------------
Summary: Add check for import from relocated packages Key: AMBARI-21701 URL: https://issues.apache.org/jira/browse/AMBARI-21701 Project: Ambari Issue Type: Improvement Components: ambari-server Affects Versions: 3.0.0 Reporter: Doroszlai, Attila Assignee: Doroszlai, Attila Priority: Minor Fix For: 3.0.0 Occasionally an import from {{org.apache.hadoop.metrics2.sink.relocated....}} creeps into {{ambari-server}} source code, causing compile errors: {noformat} $ mvn -am -pl ambari-server clean test ... [ERROR] ambari-server/src/test/java/org/apache/ambari/server/checks/AbstractCheckDescriptorTest.java:[39,71] package org.apache.hadoop.metrics2.sink.relocated.google.common.collect does not exist [ERROR] ambari-server/src/test/java/org/apache/ambari/server/checks/AbstractCheckDescriptorTest.java:[114,34] cannot find symbol [ERROR] symbol: variable Sets [ERROR] location: class org.apache.ambari.server.checks.AbstractCheckDescriptorTest {noformat} The problem is that the same code can be compiled if dependencies are already installed in one's local Maven repository. {noformat} $ mvn -am -pl ambari-metrics/ambari-metrics-common,ambari-serviceadvisor,ambari-views clean install ... $ mvn -pl ambari-server clean test ... [INFO] BUILD SUCCESS {noformat} This succeeds because {{ambari-metrics-common}} installs a shaded uber jar including the {{..relocated..}} packages, hence they are available when compiling {{ambari-server}}. On the other hand, when building from scratch (selectively with {{-am -pl ...}}, or the entire multimodule project) classpath contains {{ambari-metrics-common}} classes and individual dependencies without relocation. The goal of this change is to add a checkstyle check to catch such imports at build-time with both compilation methods. -- This message was sent by Atlassian JIRA (v6.4.14#64029)