[ 
https://issues.apache.org/jira/browse/PHOENIX-2908?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15288170#comment-15288170
 ] 

William Yang commented on PHOENIX-2908:
---------------------------------------

Yes, the master branch doesn't have this issue.
Because master uses antlr-runtime 3.5.2,  not 3.5 in phoenix-4.6.0. In the 
pom.xml of antlr-runtime 3.5.2,  dependency of stringtemplate is 'optional', 
which is not in 3.5. As phoenix does not use stringtemplate, so it is not 
included any more.

But stringtemplate (3.2.1) still depends on antlr 2.7.7, both in antlr-runtime 
3.5.2 and 3.5. So if some one uses stringtemplate in the future, he will still 
depend both antlr versions. Never mind, it won't happen.

Up to now, there is only one thing that matters: can we only depend on 
antlr-runtime (exclude antlr 3.5.2) ? 

> phoenix-core depends on both antlr 3.5 and antlr 2.7.7
> ------------------------------------------------------
>
>                 Key: PHOENIX-2908
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-2908
>             Project: Phoenix
>          Issue Type: Bug
>            Reporter: William Yang
>            Priority: Minor
>              Labels: build
>             Fix For: 4.8.0
>
>         Attachments: PHOENIX-2908_removeBothAntlr.patch, 
> PHOENIX-2908_removeOnlyAntlr2.7.7.patch
>
>
> 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
> Moreover, in the final jar file 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. So it does not have any 
> negative effects, but it is a existed problem.
> 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 know whether it still exists in antlr 4.
> I searched the source code and generated source code and i cannot find 
> explicit import for classes in antlr-*.jar, but only antlr-runtime instead.  
> 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. 
> Moreover, I added java parameter '-verbose:class' for sqlline.py and see 
> which antlr class is loaded. The result shows that only classes in 
> antlr-runtime had been loaded, not any in antlr 3.5/2.7.7.
> So, I think it might be safe to remove dependency of antlr 3.5 and exclude 
> stringtemplate from antlr-runtime.  



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to