sirthias / pegdown

A pure-Java Markdown processor based on a parboiled PEG parser supporting a number of extensions
http://pegdown.org
Apache License 2.0
1.29k stars 218 forks source link

Problems with Parpoiled's ASM transitive dependency #226

Open RobWin opened 8 years ago

RobWin commented 8 years ago

Hello,

the ASM library dependency of Parboiled causes issues, if you use Pegdown in a project which requires ASM in a different (lower) version. For example: bodiam/markdown-to-asciidoc#24

Is there a possibility to release a Pegdown version which shadows Parboiled and its transitive dependencies? Means: To package the Pegdown in an uber-jar, including its dependencies and to shade - i.e. rename - the packages of some of the dependencies.

With Maven you could use https://maven.apache.org/plugins/maven-shade-plugin/. With Gradle you could use https://github.com/johnrengelman/shadow

Not sure if there is a plugin for SBT though :(

vsch commented 7 years ago

@RobWin, when I used to use pegdown in my IntelliJ plugin, I resorted to using jarjar to change parboiled ASM dependency to a customized package so it does not conflict with other ASM lib versions.

Could be an easy solution for you too. Here is what I used in my jarjar.rules file:

rule org.objectweb.asm.** com.vladsch.asm4.@1

And the bash script to run jarjar:

#!/usr/bin/env bash
java -jar jarjar-1.4.jar process jarjar.rules asm-all-4.1.jar ../lib/asm-all-asm4.jar
java -jar jarjar-1.4.jar process jarjar.rules parboiled-java-1.1.7.jar ../lib/parboiled-java-asm4.jar
java -jar jarjar-1.4.jar process jarjar.rules parboiled-java-1.1.7.jar ../lib/parboiled-java-asm4.jar