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)