Skip to content

Commit

Permalink
Merge branch 'plugin'
Browse files Browse the repository at this point in the history
  • Loading branch information
jabrena committed May 9, 2020
2 parents 37daf8c + a31de10 commit f15438e
Show file tree
Hide file tree
Showing 6 changed files with 245 additions and 44 deletions.
6 changes: 3 additions & 3 deletions README.md
Expand Up @@ -61,14 +61,14 @@ The project has been designed with the following solution in mind:
| 4 | EV3Dev Kernel | 4.4.47-19-ev3dev-rpi2 | 4.14.71-ev3dev-2.3.0-ev3 |
| 5 | ev3dev-lang-java | 0.7.0 | 2.4.12 |

**Note:** At the moment, we will maintain the whole solution until the next `LEGO Mindstorms` product estimated
for next January of 2020.
**Note:** At the moment, we will maintain the whole solution until the next `LEGO Mindstorms` product estimated
for next January of 2021.

## Features included in the whole project

**Java features**

* OpenJDK Java 11/12ea support for EV3 Brick, Brickpi+/PiStorms + Raspberry Pi 3
* OpenJDK Java 11/12/13/14 support for EV3 Brick, Brickpi+/PiStorms + Raspberry Pi 3
* Java profiling tools Support ([Oracle mission control](http://www.oracle.com/technetwork/java/javaseproducts/mission-control/java-mission-control-1998576.html) & [JConsole](http://docs.oracle.com/javase/7/docs/technotes/guides/management/jconsole.html))
* Logging support based on [SLF4J](https://www.slf4j.org/)
* Centralized logs with [Kibana](https://www.elastic.co/products/kibana)
Expand Down
19 changes: 6 additions & 13 deletions build.gradle
Expand Up @@ -10,12 +10,12 @@ plugins {
id "jacoco"
id 'checkstyle'
id 'maven-publish'
id 'com.github.ev3dev-lang-java.gradle-plugin' version '2.0.0'
id 'org.hidetake.ssh' version '2.10.1'
id "net.ossindex.audit" version "0.4.5-beta"
id "com.github.johnrengelman.shadow" version "4.0.3"
}

version = '2.6.2-SNAPSHOT'
version = '2.7.0-SNAPSHOT'

repositories {
jcenter()
Expand Down Expand Up @@ -86,7 +86,6 @@ jacocoTestCoverageVerification {

test {
jacoco {
append = false
destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
classDumpDir = file("$buildDir/jacoco/classpathdumps")
}
Expand All @@ -95,29 +94,23 @@ test {
test.finalizedBy jacocoTestReport
test.finalizedBy jacocoTestCoverageVerification

apply from: './gradle/config.gradle'
apply from: './gradle/docker.gradle'

//Jar
jar {
baseName = "${rootProject.name}"
manifest {
attributes("Implementation-Title": "EV3Dev-lang-java",
"Implementation-Version": version,
"Implementation-Vendor": "Juan Antonio Breña Moral",
"Main-Class": brick.pref.mainClass,
"Class-Path": brick.getClassPath(true) )
from file("${projectDir}/src/main/resources/META-INF/MANIFEST.MF")
}
}

task fatJar {
doLast {

}
}
fatJar.dependsOn shadowJar


apply from: './gradle/config.gradle'
apply from: './gradle/deploy.gradle'
apply from: './gradle/docker.gradle'

/* global settings */
configure(allprojects) { project ->
Expand Down
18 changes: 7 additions & 11 deletions gradle/config.gradle
@@ -1,11 +1,7 @@

// Project configuration
brick.pref {
// Main class //
mainClass = ""

// Brick connection parameters //
sshHost = "10.0.0.89"
sshUser = "robot"
sshPassword = "maker"
}
remotes {
ev3dev {
host = '192.168.1.151'
user = 'robot'
password = 'maker'
}
}
224 changes: 224 additions & 0 deletions gradle/deploy.gradle
@@ -0,0 +1,224 @@
ssh.settings {
knownHosts = allowAnyHosts
}

task testConnection {
doLast {
ssh.run {
session(remotes.ev3dev) {
println "ls "
execute "ls "
}
}
}
}

task free {
doLast {
ssh.run {
session(remotes.ev3dev) {
println "free "
execute "free "
}
}
}
}

task top {
doLast {
ssh.run {
session(remotes.ev3dev) {
println "top "
execute "top "
}
}
}
}

task ps {
doLast {
ssh.run {
session(remotes.ev3dev) {
println "ps "
execute "ps aux | sort -n -k 4 "
}
}
}
}

task stopBluetooth {
doLast {
ssh.run {
session(remotes.ev3dev) {
println "echo -e \"maker\" | sudo systemctl stop bluetooth"
execute "echo -e \"maker\" | sudo systemctl stop bluetooth"
}
}
}
}

task ev3devInfo {
doLast {
ssh.run {
session(remotes.ev3dev) {
println "ev3dev-sysinfo -m"
execute "ev3dev-sysinfo -m"
}
}
}
}

task pkillJava {
doLast {
ssh.run {
session(remotes.ev3dev) {
println "pkill java"
execute "pkill java"
}
}
}
}

task removePreviousJar {
doLast {
ssh.run {
session(remotes.ev3dev) {
println "rm /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar "
execute "rm /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar "
}
}
}
}

task deploy {
doLast {
ssh.run {
session(remotes.ev3dev) {
put from: "${projectDir}/build/libs/" + "${rootProject.name}" + "-" + version + ".jar", into: "/home/robot/"
}
}
}
}

deploy.dependsOn clean, fatJar

task remoteRun {
doLast {
ssh.run {
session(remotes.ev3dev) {
println "time java -jar /home/robot/" + "${rootProject.name}" + "-" + version + ".jar "
execute "time java -jar /home/robot/" + "${rootProject.name}" + "-" + version + ".jar "
}
}
}
}

task remoteBrickRun {
doLast {
ssh.run {
session(remotes.ev3dev) {
println "time brickrun -- java -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar "
execute "time brickrun -- java -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar "
}
}
}
}

task remoteRunClassVerbose {
doLast {
ssh.run {
session(remotes.ev3dev) {
println "java -verbose:class -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar "
execute "java -verbose:class -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar "
}
}
}
}

task remoteSudoRun {
doLast {
ssh.run {
session(remotes.ev3dev) {
println "echo -e \"maker\" | sudo -S java -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all" + ".jar"
execute "echo -e \"maker\" | sudo -S java -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all" + ".jar"
}
}
}
}

task remoteProfilingRun {
doLast {
ssh.run {
session(remotes.ev3dev) {
println "brickrun -- java -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=7091 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar "
execute "brickrun -- java -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=7091 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar "
}
}
}
}

task remoteProfilingSudoRun {
doLast {
ssh.run {
session(remotes.ev3dev) {
println "echo -e \"maker\" | sudo -S brickrun -- java -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=7091 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar "
execute "echo -e \"maker\" | sudo -S brickrun -- java -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=7091 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar "
}
}
}
}

task deployAndRun {
doLast {
}
}
deployAndRun.dependsOn deploy, remoteRun

task deployAndBrickRun {
doLast {
}
}
deployAndBrickRun.dependsOn deploy, remoteBrickRun

task deployAndSudoRun {
doLast {
}
}
deployAndSudoRun.dependsOn deploy, remoteSudoRun

task deployAndProfilingRun {
doLast {
}
}
deployAndProfilingRun.dependsOn deploy, remoteProfilingRun

task deployAndProfilingSudoRun {
doLast {
}
}
deployAndProfilingSudoRun.dependsOn deploy, remoteProfilingSudoRun

apply from: './gradle/config.gradle'

//Organize tasks in a Group
def groupName = "ev3dev-lang-java"
testConnection.group = groupName
free.group = groupName
ps.group = groupName
top.group = groupName
stopBluetooth.group = groupName
ev3devInfo.group = groupName
removePreviousJar.group = groupName
deploy.group = groupName
remoteBrickRun.group = groupName
remoteRun.group = groupName
remoteRunClassVerbose.group = groupName
remoteSudoRun.group = groupName
remoteProfilingRun.group = groupName
remoteProfilingSudoRun.group = groupName
deployAndRun.group = groupName
deployAndBrickRun.group = groupName
deployAndSudoRun.group = groupName
deployAndProfilingRun.group = groupName
deployAndProfilingSudoRun.group = groupName
pkillJava.group = groupName
18 changes: 1 addition & 17 deletions settings.gradle
@@ -1,17 +1 @@
pluginManagement {
resolutionStrategy {
eachPlugin {
if (requested.id.namespace == "com.github.ev3dev-lang-java") {
useModule("com.github.ev3dev-lang-java:${requested.id.name}:${requested.version}")
}
}
}
repositories {
gradlePluginPortal()
maven { url "https://jitpack.io" }
jcenter()
mavenCentral()
}
}

rootProject.name = 'ev3dev-lang-java'
rootProject.name = 'ev3dev-lang-java'
4 changes: 4 additions & 0 deletions src/main/resources/META-INF/MANIFEST.MF
@@ -0,0 +1,4 @@
Manifest-Version: 1.0
Implementation-Title: EV3Dev-lang-java
Implementation-Version: 2.7.0-SNAPSHOT
Implementation-Vendor: Juan Antonio Breña Moral

0 comments on commit f15438e

Please sign in to comment.