Hi all
   I found a weird problem when executing 'mvn dependency:tree 
-pl=phoenix-core'. It shows that we depends on both antlr-3.5.jar and 
antlr-2.7.7.jar.


[INFO] org.apache.phoenix:phoenix-core:jar:4.6-adh6u-SNAPSHOT
[INFO] +- org.antlr:antlr:jar:3.5:compile
[INFO] |  \- org.antlr:ST4:jar:4.0.7:compile
[INFO] +- org.antlr:antlr-runtime:jar:3.5:compile
[INFO] |  \- org.antlr:stringtemplate:jar:3.2.1:compile
[INFO] |     \- antlr:antlr:jar:2.7.7:compile


 Then we have both antlr 3.5 and 2.7.7. Has anyone ever noticed this?
  I checked the phoenix-4.6.0-HBase-1.1-client.jar, it contains both antlr 3.5 
and 2.7.7 too. Fortunately they have different package name and will not cause 
unexpected problems.


  I found the following issues in Antlr's community:
 https://github.com/antlr/stringtemplate4/issues/51
 https://github.com/antlr/antlr3/issues/75
 It seems that it is a known issue and has not been solved and never will be 
for antlr 3. I don't whether it sill exists in antlr 4.


 I searched the source code and generated source code and i failed to find 
explicit import for classes in antlr-*.jar, but only antlr-runtime.  Is antlr 
3.5 necessary for phoenix?
 I did the following things:
 1. remove antlr 3.5 dependency from pom
 2. add exclusion of stringtemplate for antlr-runtime (so it will not have the 
transit dependency of antlr 2.7.7)
Then, both antlr 3.5 and antlr 2.7.7 disappeared. After that, all IT/UTs 
passed.  Everything seems to be fine. 


So, am I right? Is it safe to remove antlr 3.5 dependency?




 

Reply via email to