The solution is gradle. Gradle is a project automation tool with excellent support for Java (Google now recommends using gradle and Android Studio - a port of IntelliJ - for Android development). Though gradle has somewhat of a learning curve, it is well worth it, since only after using gradle have I finally begun to understand how a java project comes together. Furthermore with gradle one can build projects from the command line by simply issuing the command gradle build.
Gradle installation is straightforward and is explained here. Once installed the next step is to create a build.gradle file in the root folder of your LeJOS project (your source code). The build.gradle for one of my earlier projects looks like this:
apply plugin: 'java'
def main_class = "Rover" // We define the main class of the project
// We set the Version of the Java SDK to the one on the system: 1.6
sourceCompatibility = 1.6
sourceSets {
main {
// We specify the source directories for the project. The first one is created by us while the latter two are part of the LeJOS source and provide
// essential classes for controlling the EV3.
java {
srcDirs = ['src', '/home/abid/applications/lejos/ev3/DBusJava/src', '/home/abid/applications/lejos/ev3/ev3classes/src']
}
// We specify the jar library required to compile the project. This provides the com.sun.jna package
dependencies {
compile files('/home/abid/applications/lejos/ev3/ev3classes/lib/jna-3.2.7.jar')
}
// We specify manifest attributes (key-value pairs that must appear in the META-INF/MANIFEST>MF file inside the output Jar for the EV3 to run it correctly.
// Additionally we supply the name of the Main-Class which is the starting point of the program execution.
jar {
manifest {
attributes("Main-Class": main_class, "Class-Path": "/home/root/lejos/lib/ev3classes.jar /home/root/lejos/libjna/usr/share/java/jna.jar")
}
}
}
}
This is pretty much a template build.gradle file for any LeJOS EV3 project. The one-time alterations needed are to change the latter two srcDirs to point to the locations in the local LeJOS git repo as well as the jna jar dependency in the same.
The only thing one needs to alter (from project to project) is the name of the main class defined in the variable main_class near the beginning. And you are good to go. Execute gradle build and the project will compile and place the results in the build/ sub-folder.
Next time I will show you how to incorporate all of this in to one epic Makefile complete with dependencies.
No comments:
Post a Comment