[ https://issues.apache.org/jira/browse/PHOENIX-2908?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15293521#comment-15293521 ]
James Taylor commented on PHOENIX-2908: --------------------------------------- LGTM. If you agree, [~sergey.soldatov], would you mind checking it in? Thanks for the contribution, [~yhxx511]! > 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_removeBothAntlr_v2.patch, PHOENIX-2908_removeBothAntlr_v3.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)