I have to write a java application which I’m putting together using eclipse and it relies on open source code. This application needs to be self-contained, meaning that I’m supposed to create a jar file that has no external dependencies.
I can use the open source code when I reference the jar files in the project’s build path, but the idea is to have the actual source code as part of the eclipse project, side-by-side with my code.
The source code can be found here: http://hc.apache.org/, but when I import an existing file system into my project I can’t quite get things to work. The packages end up with the wrong names, breaking references, and I can’t do anything. Notice that the folder containing the source code has this structure:
httpcomponents-client-4.2.3\
src\
httpmime\
httpclient-osgi
httpclient-contrib
httpclient-cache
httpclient-benchmark
httpclient
fluent-hc
each of those subfolders has src/main/java/org/apache subfolders.
Can someone please explain how to do this? Am I supposed to import everything one java file at a time?
Use a tool like OneJar, FatJar, JarJar, etc. to create a single-jar application.
As Charlie mentioned, the Maven Shade plugin is another choice, particularly if you’re already using Maven. If you’re not, consider it or another transitive dependency management tool.
Some tool should be used, IMO, and it’s more important the more dependencies you have.
Alternatively you could use a jar class loader and include the jar file in your artifact.
I would most definitely not include the source of dependencies in your own project.