wiki:DevelopersGuide/Compiling

Version 13 (modified by gschmidtee@…, 9 years ago) ( diff )

necessary changes to make the tests Actually work. Missing tools & findbugs dir, & important info to use Ant to run them all

This page describes how to compile the Java source code in IDE in order to get a runnable josm-custom.jar file.

Getting the Source

Source code#Getthesource

Compiling

Compiling using Ant

The easiest way to compile JOSM

Source code#CompilingusingAnt

Compiling using Eclipse

Download and install Eclipse: https://www.eclipse.org/

Use Eclipse and the provided .project and .classpath file. Just import project using the JOSM core folder as root directory.

You will have problems compiling, due to problems compiling Mappaint MapCSS with a fresh install of Eclipse. First you will need the JavaCC plugin for Eclipse. To install it in Eclipse, go to Help->New Software... then add the site http://eclipse-javacc.sourceforge.net/ as a source, and install the JavaCC Eclipse Plug-in. Then in the Package Explorer, expand org.openstreetmap.josm.gui.mappaint.mapcss, right-click on MapCSSParser.jj, and "Compile with JavaCC". This should put new java files in a package called org.openstreetmap.josm.gui.mappaint.mapcss.parsergen, but if it doesn't, you will have to create the package manually (right-click and create package), then drag the new files into the package you just created (they should be easy to identify based on the light gray text that denotes it was compiled from MapCSSParser.jj). This should resolve any import issues in MapCSSStyleSource.java, and you should now be able to compile JOSM.

If you try to compile the JOSM sources in Eclipse and get errors like "The method marktr(String) is undefined for the type SomeType" look at solution suggested at mailing list.

There are also two Videos available at youtube, which show how to checkout JOSM into Eclipse and how to checkout a JOSM plugin into Eclipse.

Compiling using Netbeans

  1. Download and install Netbeans: https://netbeans.org/
  2. File → Open Project
  3. Navigate to the JOSM source code (see #GettingtheSource), subdirectory netbeans/
  4. Use 1 to compile, 2 to clean and compile, and 3 to run JOSM:

Compiling using ​IntelliJ IDEA

DevelopersGuide/CompilingUsingIntelliJ

Unit Tests

PLEASE NOTE BELOW DOES NOT WORK AS STATED. THIS SECTION NEEDS AN UPDATE. I AM INSERTING MISSING ELEMENTS THAT I COULD FIND, BUT THIS NEEDS TO GO THROUGH ONE OF THE MODERATORS. PLEASE DO NOT! REMOVE THIS UNTIL THIS IS FIXED. Thanks.

It is most convenient, to run tests from an IDE like Eclipse or Netbeans. There is also an ant task to run all tests (but you cannot rerun individual tests).

All unit tests can be run in headless mode (i.e, without a graphic display), allowing them to be run in continuous integration projects.

Running Test from Command line

All tests ===

The quickest way to run the tests is done using the 'ant' build system.

ant clean test   # this will run through all 200+ tests marking them suucessful, failure, in error, or skipped.  

Individual tests

You can run individual tests from the command line, as well. Include all libraries in the class path like this:

export TESTCP=".:test/unit:test/functional:dist/josm-custom.jar:test/lib/fest/*:test/lib/junit/*:test/lib/*:test/lib/unitils-core/*"
export TESTCP=$TESTCP:"tools/*;tools/findbugs/*"   # added these missing directories.  Without it will fail to run.

Here are some the build and run instructions for some example tests:

# Projections Reference Test
javac -cp $TESTCP test/unit/org/openstreetmap/josm/data/projection/ProjectionRefTest.java
java -cp $TESTCP org.junit.runner.JUnitCore org.openstreetmap.josm.data.projection.ProjectionRefTest

# Download GPS Task Test
javac -cp $TESTCP test/unit/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTaskTest.java
java -cp $TESTCP org.junit.runner.JUnitCore org.openstreetmap.josm.actions.downloadtasks.DownloadGpsTaskTest

On Windows the syntax is almost the same:

set TESTCP=".;test/unit;test/functional;dist/josm-custom.jar;test/lib/fest/*;test/lib/junit/*;test/lib/*;test/lib/unitils-core/*;tools/*;tools/findbugs/*"
javac -cp %TESTCP% test/unit/org/openstreetmap/josm/data/projection/ProjectionRefTest.java
java -cp %TESTCP% org.junit.runner.JUnitCore org.openstreetmap.josm.data.projection.ProjectionRefTest

# and similar for the Download GPS Task Test
javac -cp %TESTCP% test/unit/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTaskTest.java
java -cp %TESTCP% org.junit.runner.JUnitCore org.openstreetmap.josm.actions.downloadtasks.DownloadGpsTaskTest

Attachments (3)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.