Building jEdit from source
February 12, 2012 [Java, Tech]I have recently agreed to take over development of the JSLint plugin for my favourite editor, jEdit.
To start developing I decided to build jEdit and its plugins from source, which wasn't as easy as I would have expected (thanks to deffbeff for some pointers). A few small changes to the setups for the plugins would make it much easier - at some point I may try to help out there, but for now, here is how I built jEdit and the set of plugins I use regularly:
sudo apt-get install openjdk-6-jdk ant git-core subversion cd ~/code/public mkdir jedit cd jedit svn co https://jedit.svn.sourceforge.net/svnroot/jedit/jEdit/trunk jEdit cd jEdit; ant; cd .. mkdir plugins
Now I made a file inside plugins called build.properties which looked like this:
install.dir = ../../jEdit/build/settings/jars jedit.plugins.dir = ../../jEdit/build/settings/jars jedit.install.dir = ../../jEdit/build build.support = ../build-support
And then continued like this:
cd plugins svn co https://jedit.svn.sourceforge.net/svnroot/jedit/build-support/trunk build-supportsvn co https://jedit.svn.sourceforge.net/svnroot/jedit/plugins/ErrorList/trunk ErrorList svn co https://jedit.svn.sourceforge.net/svnroot/jedit/plugins/CommonControls/trunk CommonControls svn co https://jedit.svn.sourceforge.net/svnroot/jedit/plugins/InfoViewer/trunk InfoViewer svn co https://jedit.svn.sourceforge.net/svnroot/jedit/plugins/Console/trunk Console svn co https://jedit.svn.sourceforge.net/svnroot/jedit/plugins/BufferList/trunk BufferList svn co https://jedit.svn.sourceforge.net/svnroot/jedit/plugins/FindFile/trunk FindFile svn co https://jedit.svn.sourceforge.net/svnroot/jedit/plugins/GnuRegexp/trunk GnuRegexp svn co https://jedit.svn.sourceforge.net/svnroot/jedit/plugins/OpenIt/trunk OpenIt svn co https://jedit.svn.sourceforge.net/svnroot/jedit/plugins/RecentBufferSwitcher/trunk RecentBufferSwitcher svn co https://jedit.svn.sourceforge.net/svnroot/jedit/plugins/Sessions/trunk Sessions svn co https://jedit.svn.sourceforge.net/svnroot/jedit/plugins/WhiteSpace/trunk WhiteSpace svn co https://jedit.svn.sourceforge.net/svnroot/jedit/plugins/ScriptEnginePlugin/trunk ScriptEnginePlugin svn co https://jedit.svn.sourceforge.net/svnroot/jedit/plugins/JavascriptScriptEnginePlugin/trunk JavascriptScriptEnginePlugin
git clone git://jedit.git.sourceforge.net/gitroot/jedit/ProjectViewer git clone git://github.com/andybalaam/jslint-plugin-for-jedit.git jslint
cd ErrorList; ant; cd .. cd CommonControls; ant; cd .. cd InfoViewer; ant; cd .. cd ProjectViewer; ant; cd .. cd Console; ant; cd .. cd BufferList; ant; cd .. cd FindFile; ant; cd .. cd GnuRegexp; ant; cd .. cd OpenIt; ant; cd .. cd RecentBufferSwitcher; ant; cd .. cd Sessions; ant; cd .. cd WhiteSpace; ant build; cd .. cd ScriptEnginePlugin; ant; cd .. cd JavascriptScriptEnginePlugin; ant; cd .. cd jslint; ant; cd ..
To find out the dependencies of all plugins and therefore what order to build them, I did this:
find ./ -name "*.props" | xargs grep "depend.*plugin"Surely something should do this for me automatically?
The problem I haven't solved yet is that the FTP plugin requires JUnit. I could have copied the junit.jar into the jars dir and I think it would have worked, but I want to do it "properly"...
Finally, I made a .desktop shortcut file in ~/.local/share/applications/jedit.desktop like this:
[Desktop Entry] Name=jEdit GenericName=Programmer's Text Editor Comment=Edit text files Exec=java -jar /home/andy/code/public/jedit/jEdit/build/jedit.jar -settings=/home/andy/code/public/jedit/jEdit/build/settings %U Icon=/home/andy/code/public/jedit/jEdit/doc/jedit.png Terminal=false Type=Application Categories=Development;TextEditor; StartupNotify=true MimeType=text/plain; StartupWMClass=org-gjt-sp-jedit-jEdit
Which enabled me to run the jEdit I had built from my system menu.
Note that I am running jEdit under OpenJDK because Sun/Oracle Java is annoying to get hold of at the moment, and generally somewhat evil. Thanks Oracle for killing Java. jEdit does not work brilliantly with OpenJDK, which is frustrating. Maybe I'll try to fix it?