From ad0bdbdd195232174d5f6fd06efd9006735acfc6 Mon Sep 17 00:00:00 2001 From: "Mcshane, James P" Date: Wed, 8 Mar 2017 20:41:08 -0600 Subject: [PATCH 1/8] Refactoring to a directory structure that will fit more easily into a gradle build --- .gitignore | 2 +- build-common.xml | 20 ++++++++++++------- build.xml | 4 ++-- .../simple/SimpleAutoTankDriveRobot.java | 0 .../example/simple/SimpleTankDriveRobot.java | 0 .../java}/org/strongback/ExecutableTimer.java | 0 .../org/strongback/command/CommandTester.java | 0 .../strongback/command/WatchedCommand.java | 0 .../java}/org/strongback/mock/Mock.java | 0 .../strongback/mock/MockAccelerometer.java | 0 .../org/strongback/mock/MockAngleSensor.java | 0 .../java}/org/strongback/mock/MockClock.java | 0 .../org/strongback/mock/MockCompass.java | 0 .../org/strongback/mock/MockController.java | 0 .../strongback/mock/MockCurrentSensor.java | 0 .../strongback/mock/MockDistanceSensor.java | 0 .../org/strongback/mock/MockGyroscope.java | 0 .../java}/org/strongback/mock/MockMotor.java | 0 .../strongback/mock/MockPIDController.java | 0 .../strongback/mock/MockPneumaticsModule.java | 0 .../org/strongback/mock/MockPowerPanel.java | 0 .../java}/org/strongback/mock/MockRelay.java | 0 .../org/strongback/mock/MockSolenoid.java | 0 .../java}/org/strongback/mock/MockSwitch.java | 0 .../org/strongback/mock/MockTalonSRX.java | 0 .../mock/MockTemperatureSensor.java | 0 .../mock/MockThreeAxisAccelerometer.java | 0 .../mock/MockTwoAxisAccelerometer.java | 0 .../strongback/mock/MockVoltageSensor.java | 0 .../org/strongback/mock/MockZeroable.java | 0 strongback-tests/build.xml | 6 +++--- .../strongback/AccumulatingEventWriter.java | 0 .../strongback/AsyncEventRecorderTest.java | 0 .../org/strongback/ExecutableTimerTest.java | 0 .../java}/org/strongback/StrongbackTest.java | 0 .../strongback/command/CommandGroupTest.java | 0 .../strongback/command/CommandRunnerTest.java | 0 .../org/strongback/command/sample/Pause.java | 0 .../component/AbstractDoubleValueTest.java | 0 .../strongback/component/AngleSensorTest.java | 0 .../org/strongback/component/CompassTest.java | 0 .../org/strongback/component/CounterTest.java | 0 .../component/DistanceSensorTest.java | 0 .../org/strongback/component/FuseTest.java | 0 .../strongback/component/GyroscopeTest.java | 0 .../component/LimitedMotorTest.java | 0 .../org/strongback/component/SwitchTest.java | 0 .../control/SoftwarePIDControllerTest.java | 0 .../control/TestableRobotState.java | 0 ...ardwareTalonSRX_AnalogInputSensorTest.java | 0 ...rdwareTalonSRX_EncoderInputSensorTest.java | 0 .../mock/AbstractDoubleMockTest.java | 0 .../mock/MockAccelerometerTest.java | 0 .../strongback/mock/MockAngleSensorTest.java | 0 .../org/strongback/mock/MockCompassTest.java | 0 .../mock/MockPneumaticsModuleTest.java | 0 .../java}/org/strongback/util/ValuesTest.java | 0 .../tools/logdecoder/LogDecoder.java | 0 .../tools/newproject/NewProject.java | 0 .../org/strongback/tools/utils/FileUtils.java | 0 .../org/strongback/tools/utils/Parser.java | 0 .../org/strongback/tools/utils/Printer.java | 0 .../tools/utils/PropertiesUtils.java | 0 .../org/strongback/tools/utils/Version.java | 0 .../resources}/strongback.properties | 0 .../tools/newproject/NewProjectTest.java | 0 .../strongback/tools/utils/FileUtilsTest.java | 0 .../strongback/tools/utils/VersionTest.java | 0 .../org/strongback/AsyncEventRecorder.java | 0 .../org/strongback/AsyncSwitchReactor.java | 0 .../java}/org/strongback/DataRecordable.java | 0 .../java}/org/strongback/DataRecorder.java | 0 .../org/strongback/DataRecorderChannel.java | 0 .../org/strongback/DataRecorderChannels.java | 0 .../org/strongback/DataRecorderDriver.java | 0 .../java}/org/strongback/DataWriter.java | 0 .../java}/org/strongback/EventRecorder.java | 0 .../java}/org/strongback/Executable.java | 0 .../java}/org/strongback/Executables.java | 0 .../java}/org/strongback/Executor.java | 0 .../java}/org/strongback/ExecutorDriver.java | 0 .../java}/org/strongback/FileDataWriter.java | 0 .../java}/org/strongback/FileEventWriter.java | 0 .../java}/org/strongback/Logger.java | 0 .../org/strongback/MappedFileDataWriter.java | 0 .../java}/org/strongback/NoOpLogger.java | 0 .../java}/org/strongback/Strongback.java | 0 .../StrongbackRequirementException.java | 0 .../java}/org/strongback/SwitchReactor.java | 0 .../java}/org/strongback/SystemLogger.java | 0 .../strongback/annotation/Experimental.java | 0 .../org/strongback/annotation/Immutable.java | 0 .../strongback/annotation/NotImplemented.java | 0 .../strongback/annotation/NotThreadSafe.java | 0 .../org/strongback/annotation/ThreadSafe.java | 0 .../java}/org/strongback/command/Command.java | 0 .../org/strongback/command/CommandGroup.java | 0 .../org/strongback/command/CommandRunner.java | 0 .../org/strongback/command/CommandState.java | 0 .../org/strongback/command/Commands.java | 0 .../strongback/command/ControllerCommand.java | 0 .../org/strongback/command/Requirable.java | 0 .../org/strongback/command/Scheduler.java | 0 .../command/UnmanagedControllerCommand.java | 0 .../strongback/components/Accelerometer.java | 0 .../strongback/components/AngleSensor.java | 0 .../org/strongback/components/Clock.java | 0 .../org/strongback/components/Compass.java | 0 .../org/strongback/components/Counter.java | 0 .../strongback/components/CurrentSensor.java | 0 .../strongback/components/DistanceSensor.java | 0 .../java}/org/strongback/components/Fuse.java | 0 .../org/strongback/components/Gyroscope.java | 0 .../strongback/components/LimitedMotor.java | 0 .../org/strongback/components/Motor.java | 0 .../components/PneumaticsModule.java | 0 .../org/strongback/components/PowerPanel.java | 0 .../org/strongback/components/Relay.java | 0 .../org/strongback/components/Solenoid.java | 0 .../components/SolenoidWithPosition.java | 0 .../components/SpeedController.java | 0 .../strongback/components/SpeedSensor.java | 0 .../org/strongback/components/Stoppable.java | 0 .../org/strongback/components/Switch.java | 0 .../org/strongback/components/TalonSRX.java | 0 .../components/TemperatureSensor.java | 0 .../components/ThreeAxisAcceleration.java | 0 .../components/ThreeAxisAccelerometer.java | 0 .../components/TwoAxisAcceleration.java | 0 .../components/TwoAxisAccelerometer.java | 0 .../strongback/components/VoltageSensor.java | 0 .../org/strongback/components/Zeroable.java | 0 .../strongback/components/package-info.java | 0 .../components/ui/ContinuousRange.java | 0 .../components/ui/DirectionalAxis.java | 0 .../strongback/components/ui/FlightStick.java | 0 .../org/strongback/components/ui/Gamepad.java | 0 .../strongback/components/ui/InputDevice.java | 0 .../org/strongback/control/Controller.java | 0 .../org/strongback/control/PIDController.java | 0 .../control/SoftwarePIDController.java | 0 .../strongback/control/TalonController.java | 0 .../org/strongback/drive/MecanumDrive.java | 0 .../java}/org/strongback/drive/TankDrive.java | 0 .../strongback/function/DoubleBiFunction.java | 0 .../function/DoubleToDoubleFunction.java | 0 .../strongback/function/IntBiFunction.java | 0 .../function/IntToBooleanFunction.java | 0 .../strongback/function/IntToIntFunction.java | 0 .../org/strongback/hardware/Hardware.java | 0 .../hardware/HardwareDoubleSolenoid.java | 0 .../strongback/hardware/HardwareMotor.java | 0 .../hardware/HardwarePneumaticsModule.java | 0 .../strongback/hardware/HardwareRelay.java | 0 .../strongback/hardware/HardwareSpark.java | 0 .../hardware/HardwareTalonController.java | 0 .../strongback/hardware/HardwareTalonSRX.java | 0 .../org/strongback/util/Collections.java | 0 .../java}/org/strongback/util/Iterators.java | 0 .../java}/org/strongback/util/Metronome.java | 0 .../java}/org/strongback/util/Values.java | 0 161 files changed, 19 insertions(+), 13 deletions(-) rename strongback-examples/src/{ => main/java}/org/strongback/example/simple/SimpleAutoTankDriveRobot.java (100%) rename strongback-examples/src/{ => main/java}/org/strongback/example/simple/SimpleTankDriveRobot.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/ExecutableTimer.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/command/CommandTester.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/command/WatchedCommand.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/mock/Mock.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/mock/MockAccelerometer.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/mock/MockAngleSensor.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/mock/MockClock.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/mock/MockCompass.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/mock/MockController.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/mock/MockCurrentSensor.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/mock/MockDistanceSensor.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/mock/MockGyroscope.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/mock/MockMotor.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/mock/MockPIDController.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/mock/MockPneumaticsModule.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/mock/MockPowerPanel.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/mock/MockRelay.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/mock/MockSolenoid.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/mock/MockSwitch.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/mock/MockTalonSRX.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/mock/MockTemperatureSensor.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/mock/MockThreeAxisAccelerometer.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/mock/MockTwoAxisAccelerometer.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/mock/MockVoltageSensor.java (100%) rename strongback-testing/src/{ => main/java}/org/strongback/mock/MockZeroable.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/AccumulatingEventWriter.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/AsyncEventRecorderTest.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/ExecutableTimerTest.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/StrongbackTest.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/command/CommandGroupTest.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/command/CommandRunnerTest.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/command/sample/Pause.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/component/AbstractDoubleValueTest.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/component/AngleSensorTest.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/component/CompassTest.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/component/CounterTest.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/component/DistanceSensorTest.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/component/FuseTest.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/component/GyroscopeTest.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/component/LimitedMotorTest.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/component/SwitchTest.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/control/SoftwarePIDControllerTest.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/control/TestableRobotState.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/hardware/HardwareTalonSRX_AnalogInputSensorTest.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/hardware/HardwareTalonSRX_EncoderInputSensorTest.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/mock/AbstractDoubleMockTest.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/mock/MockAccelerometerTest.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/mock/MockAngleSensorTest.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/mock/MockCompassTest.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/mock/MockPneumaticsModuleTest.java (100%) rename strongback-tests/src/{ => test/java}/org/strongback/util/ValuesTest.java (100%) rename strongback-tools/src/{ => main/java}/org/strongback/tools/logdecoder/LogDecoder.java (100%) rename strongback-tools/src/{ => main/java}/org/strongback/tools/newproject/NewProject.java (100%) rename strongback-tools/src/{ => main/java}/org/strongback/tools/utils/FileUtils.java (100%) rename strongback-tools/src/{ => main/java}/org/strongback/tools/utils/Parser.java (100%) rename strongback-tools/src/{ => main/java}/org/strongback/tools/utils/Printer.java (100%) rename strongback-tools/src/{ => main/java}/org/strongback/tools/utils/PropertiesUtils.java (100%) rename strongback-tools/src/{ => main/java}/org/strongback/tools/utils/Version.java (100%) rename strongback-tools/src/{ => main/resources}/strongback.properties (100%) rename strongback-tools/{test => src/test/java}/org/strongback/tools/newproject/NewProjectTest.java (100%) rename strongback-tools/{test => src/test/java}/org/strongback/tools/utils/FileUtilsTest.java (100%) rename strongback-tools/{test => src/test/java}/org/strongback/tools/utils/VersionTest.java (100%) rename strongback/src/{ => main/java}/org/strongback/AsyncEventRecorder.java (100%) rename strongback/src/{ => main/java}/org/strongback/AsyncSwitchReactor.java (100%) rename strongback/src/{ => main/java}/org/strongback/DataRecordable.java (100%) rename strongback/src/{ => main/java}/org/strongback/DataRecorder.java (100%) rename strongback/src/{ => main/java}/org/strongback/DataRecorderChannel.java (100%) rename strongback/src/{ => main/java}/org/strongback/DataRecorderChannels.java (100%) rename strongback/src/{ => main/java}/org/strongback/DataRecorderDriver.java (100%) rename strongback/src/{ => main/java}/org/strongback/DataWriter.java (100%) rename strongback/src/{ => main/java}/org/strongback/EventRecorder.java (100%) rename strongback/src/{ => main/java}/org/strongback/Executable.java (100%) rename strongback/src/{ => main/java}/org/strongback/Executables.java (100%) rename strongback/src/{ => main/java}/org/strongback/Executor.java (100%) rename strongback/src/{ => main/java}/org/strongback/ExecutorDriver.java (100%) rename strongback/src/{ => main/java}/org/strongback/FileDataWriter.java (100%) rename strongback/src/{ => main/java}/org/strongback/FileEventWriter.java (100%) rename strongback/src/{ => main/java}/org/strongback/Logger.java (100%) rename strongback/src/{ => main/java}/org/strongback/MappedFileDataWriter.java (100%) rename strongback/src/{ => main/java}/org/strongback/NoOpLogger.java (100%) rename strongback/src/{ => main/java}/org/strongback/Strongback.java (100%) rename strongback/src/{ => main/java}/org/strongback/StrongbackRequirementException.java (100%) rename strongback/src/{ => main/java}/org/strongback/SwitchReactor.java (100%) rename strongback/src/{ => main/java}/org/strongback/SystemLogger.java (100%) rename strongback/src/{ => main/java}/org/strongback/annotation/Experimental.java (100%) rename strongback/src/{ => main/java}/org/strongback/annotation/Immutable.java (100%) rename strongback/src/{ => main/java}/org/strongback/annotation/NotImplemented.java (100%) rename strongback/src/{ => main/java}/org/strongback/annotation/NotThreadSafe.java (100%) rename strongback/src/{ => main/java}/org/strongback/annotation/ThreadSafe.java (100%) rename strongback/src/{ => main/java}/org/strongback/command/Command.java (100%) rename strongback/src/{ => main/java}/org/strongback/command/CommandGroup.java (100%) rename strongback/src/{ => main/java}/org/strongback/command/CommandRunner.java (100%) rename strongback/src/{ => main/java}/org/strongback/command/CommandState.java (100%) rename strongback/src/{ => main/java}/org/strongback/command/Commands.java (100%) rename strongback/src/{ => main/java}/org/strongback/command/ControllerCommand.java (100%) rename strongback/src/{ => main/java}/org/strongback/command/Requirable.java (100%) rename strongback/src/{ => main/java}/org/strongback/command/Scheduler.java (100%) rename strongback/src/{ => main/java}/org/strongback/command/UnmanagedControllerCommand.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/Accelerometer.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/AngleSensor.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/Clock.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/Compass.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/Counter.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/CurrentSensor.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/DistanceSensor.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/Fuse.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/Gyroscope.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/LimitedMotor.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/Motor.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/PneumaticsModule.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/PowerPanel.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/Relay.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/Solenoid.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/SolenoidWithPosition.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/SpeedController.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/SpeedSensor.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/Stoppable.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/Switch.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/TalonSRX.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/TemperatureSensor.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/ThreeAxisAcceleration.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/ThreeAxisAccelerometer.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/TwoAxisAcceleration.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/TwoAxisAccelerometer.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/VoltageSensor.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/Zeroable.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/package-info.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/ui/ContinuousRange.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/ui/DirectionalAxis.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/ui/FlightStick.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/ui/Gamepad.java (100%) rename strongback/src/{ => main/java}/org/strongback/components/ui/InputDevice.java (100%) rename strongback/src/{ => main/java}/org/strongback/control/Controller.java (100%) rename strongback/src/{ => main/java}/org/strongback/control/PIDController.java (100%) rename strongback/src/{ => main/java}/org/strongback/control/SoftwarePIDController.java (100%) rename strongback/src/{ => main/java}/org/strongback/control/TalonController.java (100%) rename strongback/src/{ => main/java}/org/strongback/drive/MecanumDrive.java (100%) rename strongback/src/{ => main/java}/org/strongback/drive/TankDrive.java (100%) rename strongback/src/{ => main/java}/org/strongback/function/DoubleBiFunction.java (100%) rename strongback/src/{ => main/java}/org/strongback/function/DoubleToDoubleFunction.java (100%) rename strongback/src/{ => main/java}/org/strongback/function/IntBiFunction.java (100%) rename strongback/src/{ => main/java}/org/strongback/function/IntToBooleanFunction.java (100%) rename strongback/src/{ => main/java}/org/strongback/function/IntToIntFunction.java (100%) rename strongback/src/{ => main/java}/org/strongback/hardware/Hardware.java (100%) rename strongback/src/{ => main/java}/org/strongback/hardware/HardwareDoubleSolenoid.java (100%) rename strongback/src/{ => main/java}/org/strongback/hardware/HardwareMotor.java (100%) rename strongback/src/{ => main/java}/org/strongback/hardware/HardwarePneumaticsModule.java (100%) rename strongback/src/{ => main/java}/org/strongback/hardware/HardwareRelay.java (100%) rename strongback/src/{ => main/java}/org/strongback/hardware/HardwareSpark.java (100%) rename strongback/src/{ => main/java}/org/strongback/hardware/HardwareTalonController.java (100%) rename strongback/src/{ => main/java}/org/strongback/hardware/HardwareTalonSRX.java (100%) rename strongback/src/{ => main/java}/org/strongback/util/Collections.java (100%) rename strongback/src/{ => main/java}/org/strongback/util/Iterators.java (100%) rename strongback/src/{ => main/java}/org/strongback/util/Metronome.java (100%) rename strongback/src/{ => main/java}/org/strongback/util/Values.java (100%) diff --git a/.gitignore b/.gitignore index b077322..19bd778 100644 --- a/.gitignore +++ b/.gitignore @@ -18,5 +18,5 @@ libs/ctre libs/navx-mxp downloads/ -.DS_Store/ +.DS_Store diff --git a/build-common.xml b/build-common.xml index 968d915..bb1ad09 100644 --- a/build-common.xml +++ b/build-common.xml @@ -11,11 +11,11 @@ - - + + - - + + @@ -54,14 +54,20 @@ + + + + + + - + - + Compiling against WPILib ${wpilib.version} installed at ${wpilib.dir} - + diff --git a/build.xml b/build.xml index 7769940..c7a1ac0 100644 --- a/build.xml +++ b/build.xml @@ -92,10 +92,10 @@ - + - + diff --git a/strongback-examples/src/org/strongback/example/simple/SimpleAutoTankDriveRobot.java b/strongback-examples/src/main/java/org/strongback/example/simple/SimpleAutoTankDriveRobot.java similarity index 100% rename from strongback-examples/src/org/strongback/example/simple/SimpleAutoTankDriveRobot.java rename to strongback-examples/src/main/java/org/strongback/example/simple/SimpleAutoTankDriveRobot.java diff --git a/strongback-examples/src/org/strongback/example/simple/SimpleTankDriveRobot.java b/strongback-examples/src/main/java/org/strongback/example/simple/SimpleTankDriveRobot.java similarity index 100% rename from strongback-examples/src/org/strongback/example/simple/SimpleTankDriveRobot.java rename to strongback-examples/src/main/java/org/strongback/example/simple/SimpleTankDriveRobot.java diff --git a/strongback-testing/src/org/strongback/ExecutableTimer.java b/strongback-testing/src/main/java/org/strongback/ExecutableTimer.java similarity index 100% rename from strongback-testing/src/org/strongback/ExecutableTimer.java rename to strongback-testing/src/main/java/org/strongback/ExecutableTimer.java diff --git a/strongback-testing/src/org/strongback/command/CommandTester.java b/strongback-testing/src/main/java/org/strongback/command/CommandTester.java similarity index 100% rename from strongback-testing/src/org/strongback/command/CommandTester.java rename to strongback-testing/src/main/java/org/strongback/command/CommandTester.java diff --git a/strongback-testing/src/org/strongback/command/WatchedCommand.java b/strongback-testing/src/main/java/org/strongback/command/WatchedCommand.java similarity index 100% rename from strongback-testing/src/org/strongback/command/WatchedCommand.java rename to strongback-testing/src/main/java/org/strongback/command/WatchedCommand.java diff --git a/strongback-testing/src/org/strongback/mock/Mock.java b/strongback-testing/src/main/java/org/strongback/mock/Mock.java similarity index 100% rename from strongback-testing/src/org/strongback/mock/Mock.java rename to strongback-testing/src/main/java/org/strongback/mock/Mock.java diff --git a/strongback-testing/src/org/strongback/mock/MockAccelerometer.java b/strongback-testing/src/main/java/org/strongback/mock/MockAccelerometer.java similarity index 100% rename from strongback-testing/src/org/strongback/mock/MockAccelerometer.java rename to strongback-testing/src/main/java/org/strongback/mock/MockAccelerometer.java diff --git a/strongback-testing/src/org/strongback/mock/MockAngleSensor.java b/strongback-testing/src/main/java/org/strongback/mock/MockAngleSensor.java similarity index 100% rename from strongback-testing/src/org/strongback/mock/MockAngleSensor.java rename to strongback-testing/src/main/java/org/strongback/mock/MockAngleSensor.java diff --git a/strongback-testing/src/org/strongback/mock/MockClock.java b/strongback-testing/src/main/java/org/strongback/mock/MockClock.java similarity index 100% rename from strongback-testing/src/org/strongback/mock/MockClock.java rename to strongback-testing/src/main/java/org/strongback/mock/MockClock.java diff --git a/strongback-testing/src/org/strongback/mock/MockCompass.java b/strongback-testing/src/main/java/org/strongback/mock/MockCompass.java similarity index 100% rename from strongback-testing/src/org/strongback/mock/MockCompass.java rename to strongback-testing/src/main/java/org/strongback/mock/MockCompass.java diff --git a/strongback-testing/src/org/strongback/mock/MockController.java b/strongback-testing/src/main/java/org/strongback/mock/MockController.java similarity index 100% rename from strongback-testing/src/org/strongback/mock/MockController.java rename to strongback-testing/src/main/java/org/strongback/mock/MockController.java diff --git a/strongback-testing/src/org/strongback/mock/MockCurrentSensor.java b/strongback-testing/src/main/java/org/strongback/mock/MockCurrentSensor.java similarity index 100% rename from strongback-testing/src/org/strongback/mock/MockCurrentSensor.java rename to strongback-testing/src/main/java/org/strongback/mock/MockCurrentSensor.java diff --git a/strongback-testing/src/org/strongback/mock/MockDistanceSensor.java b/strongback-testing/src/main/java/org/strongback/mock/MockDistanceSensor.java similarity index 100% rename from strongback-testing/src/org/strongback/mock/MockDistanceSensor.java rename to strongback-testing/src/main/java/org/strongback/mock/MockDistanceSensor.java diff --git a/strongback-testing/src/org/strongback/mock/MockGyroscope.java b/strongback-testing/src/main/java/org/strongback/mock/MockGyroscope.java similarity index 100% rename from strongback-testing/src/org/strongback/mock/MockGyroscope.java rename to strongback-testing/src/main/java/org/strongback/mock/MockGyroscope.java diff --git a/strongback-testing/src/org/strongback/mock/MockMotor.java b/strongback-testing/src/main/java/org/strongback/mock/MockMotor.java similarity index 100% rename from strongback-testing/src/org/strongback/mock/MockMotor.java rename to strongback-testing/src/main/java/org/strongback/mock/MockMotor.java diff --git a/strongback-testing/src/org/strongback/mock/MockPIDController.java b/strongback-testing/src/main/java/org/strongback/mock/MockPIDController.java similarity index 100% rename from strongback-testing/src/org/strongback/mock/MockPIDController.java rename to strongback-testing/src/main/java/org/strongback/mock/MockPIDController.java diff --git a/strongback-testing/src/org/strongback/mock/MockPneumaticsModule.java b/strongback-testing/src/main/java/org/strongback/mock/MockPneumaticsModule.java similarity index 100% rename from strongback-testing/src/org/strongback/mock/MockPneumaticsModule.java rename to strongback-testing/src/main/java/org/strongback/mock/MockPneumaticsModule.java diff --git a/strongback-testing/src/org/strongback/mock/MockPowerPanel.java b/strongback-testing/src/main/java/org/strongback/mock/MockPowerPanel.java similarity index 100% rename from strongback-testing/src/org/strongback/mock/MockPowerPanel.java rename to strongback-testing/src/main/java/org/strongback/mock/MockPowerPanel.java diff --git a/strongback-testing/src/org/strongback/mock/MockRelay.java b/strongback-testing/src/main/java/org/strongback/mock/MockRelay.java similarity index 100% rename from strongback-testing/src/org/strongback/mock/MockRelay.java rename to strongback-testing/src/main/java/org/strongback/mock/MockRelay.java diff --git a/strongback-testing/src/org/strongback/mock/MockSolenoid.java b/strongback-testing/src/main/java/org/strongback/mock/MockSolenoid.java similarity index 100% rename from strongback-testing/src/org/strongback/mock/MockSolenoid.java rename to strongback-testing/src/main/java/org/strongback/mock/MockSolenoid.java diff --git a/strongback-testing/src/org/strongback/mock/MockSwitch.java b/strongback-testing/src/main/java/org/strongback/mock/MockSwitch.java similarity index 100% rename from strongback-testing/src/org/strongback/mock/MockSwitch.java rename to strongback-testing/src/main/java/org/strongback/mock/MockSwitch.java diff --git a/strongback-testing/src/org/strongback/mock/MockTalonSRX.java b/strongback-testing/src/main/java/org/strongback/mock/MockTalonSRX.java similarity index 100% rename from strongback-testing/src/org/strongback/mock/MockTalonSRX.java rename to strongback-testing/src/main/java/org/strongback/mock/MockTalonSRX.java diff --git a/strongback-testing/src/org/strongback/mock/MockTemperatureSensor.java b/strongback-testing/src/main/java/org/strongback/mock/MockTemperatureSensor.java similarity index 100% rename from strongback-testing/src/org/strongback/mock/MockTemperatureSensor.java rename to strongback-testing/src/main/java/org/strongback/mock/MockTemperatureSensor.java diff --git a/strongback-testing/src/org/strongback/mock/MockThreeAxisAccelerometer.java b/strongback-testing/src/main/java/org/strongback/mock/MockThreeAxisAccelerometer.java similarity index 100% rename from strongback-testing/src/org/strongback/mock/MockThreeAxisAccelerometer.java rename to strongback-testing/src/main/java/org/strongback/mock/MockThreeAxisAccelerometer.java diff --git a/strongback-testing/src/org/strongback/mock/MockTwoAxisAccelerometer.java b/strongback-testing/src/main/java/org/strongback/mock/MockTwoAxisAccelerometer.java similarity index 100% rename from strongback-testing/src/org/strongback/mock/MockTwoAxisAccelerometer.java rename to strongback-testing/src/main/java/org/strongback/mock/MockTwoAxisAccelerometer.java diff --git a/strongback-testing/src/org/strongback/mock/MockVoltageSensor.java b/strongback-testing/src/main/java/org/strongback/mock/MockVoltageSensor.java similarity index 100% rename from strongback-testing/src/org/strongback/mock/MockVoltageSensor.java rename to strongback-testing/src/main/java/org/strongback/mock/MockVoltageSensor.java diff --git a/strongback-testing/src/org/strongback/mock/MockZeroable.java b/strongback-testing/src/main/java/org/strongback/mock/MockZeroable.java similarity index 100% rename from strongback-testing/src/org/strongback/mock/MockZeroable.java rename to strongback-testing/src/main/java/org/strongback/mock/MockZeroable.java diff --git a/strongback-tests/build.xml b/strongback-tests/build.xml index f6ed207..7d972a8 100644 --- a/strongback-tests/build.xml +++ b/strongback-tests/build.xml @@ -9,13 +9,13 @@ - + [run-tests] Running all unit tests... - + @@ -23,7 +23,7 @@ - + diff --git a/strongback-tests/src/org/strongback/AccumulatingEventWriter.java b/strongback-tests/src/test/java/org/strongback/AccumulatingEventWriter.java similarity index 100% rename from strongback-tests/src/org/strongback/AccumulatingEventWriter.java rename to strongback-tests/src/test/java/org/strongback/AccumulatingEventWriter.java diff --git a/strongback-tests/src/org/strongback/AsyncEventRecorderTest.java b/strongback-tests/src/test/java/org/strongback/AsyncEventRecorderTest.java similarity index 100% rename from strongback-tests/src/org/strongback/AsyncEventRecorderTest.java rename to strongback-tests/src/test/java/org/strongback/AsyncEventRecorderTest.java diff --git a/strongback-tests/src/org/strongback/ExecutableTimerTest.java b/strongback-tests/src/test/java/org/strongback/ExecutableTimerTest.java similarity index 100% rename from strongback-tests/src/org/strongback/ExecutableTimerTest.java rename to strongback-tests/src/test/java/org/strongback/ExecutableTimerTest.java diff --git a/strongback-tests/src/org/strongback/StrongbackTest.java b/strongback-tests/src/test/java/org/strongback/StrongbackTest.java similarity index 100% rename from strongback-tests/src/org/strongback/StrongbackTest.java rename to strongback-tests/src/test/java/org/strongback/StrongbackTest.java diff --git a/strongback-tests/src/org/strongback/command/CommandGroupTest.java b/strongback-tests/src/test/java/org/strongback/command/CommandGroupTest.java similarity index 100% rename from strongback-tests/src/org/strongback/command/CommandGroupTest.java rename to strongback-tests/src/test/java/org/strongback/command/CommandGroupTest.java diff --git a/strongback-tests/src/org/strongback/command/CommandRunnerTest.java b/strongback-tests/src/test/java/org/strongback/command/CommandRunnerTest.java similarity index 100% rename from strongback-tests/src/org/strongback/command/CommandRunnerTest.java rename to strongback-tests/src/test/java/org/strongback/command/CommandRunnerTest.java diff --git a/strongback-tests/src/org/strongback/command/sample/Pause.java b/strongback-tests/src/test/java/org/strongback/command/sample/Pause.java similarity index 100% rename from strongback-tests/src/org/strongback/command/sample/Pause.java rename to strongback-tests/src/test/java/org/strongback/command/sample/Pause.java diff --git a/strongback-tests/src/org/strongback/component/AbstractDoubleValueTest.java b/strongback-tests/src/test/java/org/strongback/component/AbstractDoubleValueTest.java similarity index 100% rename from strongback-tests/src/org/strongback/component/AbstractDoubleValueTest.java rename to strongback-tests/src/test/java/org/strongback/component/AbstractDoubleValueTest.java diff --git a/strongback-tests/src/org/strongback/component/AngleSensorTest.java b/strongback-tests/src/test/java/org/strongback/component/AngleSensorTest.java similarity index 100% rename from strongback-tests/src/org/strongback/component/AngleSensorTest.java rename to strongback-tests/src/test/java/org/strongback/component/AngleSensorTest.java diff --git a/strongback-tests/src/org/strongback/component/CompassTest.java b/strongback-tests/src/test/java/org/strongback/component/CompassTest.java similarity index 100% rename from strongback-tests/src/org/strongback/component/CompassTest.java rename to strongback-tests/src/test/java/org/strongback/component/CompassTest.java diff --git a/strongback-tests/src/org/strongback/component/CounterTest.java b/strongback-tests/src/test/java/org/strongback/component/CounterTest.java similarity index 100% rename from strongback-tests/src/org/strongback/component/CounterTest.java rename to strongback-tests/src/test/java/org/strongback/component/CounterTest.java diff --git a/strongback-tests/src/org/strongback/component/DistanceSensorTest.java b/strongback-tests/src/test/java/org/strongback/component/DistanceSensorTest.java similarity index 100% rename from strongback-tests/src/org/strongback/component/DistanceSensorTest.java rename to strongback-tests/src/test/java/org/strongback/component/DistanceSensorTest.java diff --git a/strongback-tests/src/org/strongback/component/FuseTest.java b/strongback-tests/src/test/java/org/strongback/component/FuseTest.java similarity index 100% rename from strongback-tests/src/org/strongback/component/FuseTest.java rename to strongback-tests/src/test/java/org/strongback/component/FuseTest.java diff --git a/strongback-tests/src/org/strongback/component/GyroscopeTest.java b/strongback-tests/src/test/java/org/strongback/component/GyroscopeTest.java similarity index 100% rename from strongback-tests/src/org/strongback/component/GyroscopeTest.java rename to strongback-tests/src/test/java/org/strongback/component/GyroscopeTest.java diff --git a/strongback-tests/src/org/strongback/component/LimitedMotorTest.java b/strongback-tests/src/test/java/org/strongback/component/LimitedMotorTest.java similarity index 100% rename from strongback-tests/src/org/strongback/component/LimitedMotorTest.java rename to strongback-tests/src/test/java/org/strongback/component/LimitedMotorTest.java diff --git a/strongback-tests/src/org/strongback/component/SwitchTest.java b/strongback-tests/src/test/java/org/strongback/component/SwitchTest.java similarity index 100% rename from strongback-tests/src/org/strongback/component/SwitchTest.java rename to strongback-tests/src/test/java/org/strongback/component/SwitchTest.java diff --git a/strongback-tests/src/org/strongback/control/SoftwarePIDControllerTest.java b/strongback-tests/src/test/java/org/strongback/control/SoftwarePIDControllerTest.java similarity index 100% rename from strongback-tests/src/org/strongback/control/SoftwarePIDControllerTest.java rename to strongback-tests/src/test/java/org/strongback/control/SoftwarePIDControllerTest.java diff --git a/strongback-tests/src/org/strongback/control/TestableRobotState.java b/strongback-tests/src/test/java/org/strongback/control/TestableRobotState.java similarity index 100% rename from strongback-tests/src/org/strongback/control/TestableRobotState.java rename to strongback-tests/src/test/java/org/strongback/control/TestableRobotState.java diff --git a/strongback-tests/src/org/strongback/hardware/HardwareTalonSRX_AnalogInputSensorTest.java b/strongback-tests/src/test/java/org/strongback/hardware/HardwareTalonSRX_AnalogInputSensorTest.java similarity index 100% rename from strongback-tests/src/org/strongback/hardware/HardwareTalonSRX_AnalogInputSensorTest.java rename to strongback-tests/src/test/java/org/strongback/hardware/HardwareTalonSRX_AnalogInputSensorTest.java diff --git a/strongback-tests/src/org/strongback/hardware/HardwareTalonSRX_EncoderInputSensorTest.java b/strongback-tests/src/test/java/org/strongback/hardware/HardwareTalonSRX_EncoderInputSensorTest.java similarity index 100% rename from strongback-tests/src/org/strongback/hardware/HardwareTalonSRX_EncoderInputSensorTest.java rename to strongback-tests/src/test/java/org/strongback/hardware/HardwareTalonSRX_EncoderInputSensorTest.java diff --git a/strongback-tests/src/org/strongback/mock/AbstractDoubleMockTest.java b/strongback-tests/src/test/java/org/strongback/mock/AbstractDoubleMockTest.java similarity index 100% rename from strongback-tests/src/org/strongback/mock/AbstractDoubleMockTest.java rename to strongback-tests/src/test/java/org/strongback/mock/AbstractDoubleMockTest.java diff --git a/strongback-tests/src/org/strongback/mock/MockAccelerometerTest.java b/strongback-tests/src/test/java/org/strongback/mock/MockAccelerometerTest.java similarity index 100% rename from strongback-tests/src/org/strongback/mock/MockAccelerometerTest.java rename to strongback-tests/src/test/java/org/strongback/mock/MockAccelerometerTest.java diff --git a/strongback-tests/src/org/strongback/mock/MockAngleSensorTest.java b/strongback-tests/src/test/java/org/strongback/mock/MockAngleSensorTest.java similarity index 100% rename from strongback-tests/src/org/strongback/mock/MockAngleSensorTest.java rename to strongback-tests/src/test/java/org/strongback/mock/MockAngleSensorTest.java diff --git a/strongback-tests/src/org/strongback/mock/MockCompassTest.java b/strongback-tests/src/test/java/org/strongback/mock/MockCompassTest.java similarity index 100% rename from strongback-tests/src/org/strongback/mock/MockCompassTest.java rename to strongback-tests/src/test/java/org/strongback/mock/MockCompassTest.java diff --git a/strongback-tests/src/org/strongback/mock/MockPneumaticsModuleTest.java b/strongback-tests/src/test/java/org/strongback/mock/MockPneumaticsModuleTest.java similarity index 100% rename from strongback-tests/src/org/strongback/mock/MockPneumaticsModuleTest.java rename to strongback-tests/src/test/java/org/strongback/mock/MockPneumaticsModuleTest.java diff --git a/strongback-tests/src/org/strongback/util/ValuesTest.java b/strongback-tests/src/test/java/org/strongback/util/ValuesTest.java similarity index 100% rename from strongback-tests/src/org/strongback/util/ValuesTest.java rename to strongback-tests/src/test/java/org/strongback/util/ValuesTest.java diff --git a/strongback-tools/src/org/strongback/tools/logdecoder/LogDecoder.java b/strongback-tools/src/main/java/org/strongback/tools/logdecoder/LogDecoder.java similarity index 100% rename from strongback-tools/src/org/strongback/tools/logdecoder/LogDecoder.java rename to strongback-tools/src/main/java/org/strongback/tools/logdecoder/LogDecoder.java diff --git a/strongback-tools/src/org/strongback/tools/newproject/NewProject.java b/strongback-tools/src/main/java/org/strongback/tools/newproject/NewProject.java similarity index 100% rename from strongback-tools/src/org/strongback/tools/newproject/NewProject.java rename to strongback-tools/src/main/java/org/strongback/tools/newproject/NewProject.java diff --git a/strongback-tools/src/org/strongback/tools/utils/FileUtils.java b/strongback-tools/src/main/java/org/strongback/tools/utils/FileUtils.java similarity index 100% rename from strongback-tools/src/org/strongback/tools/utils/FileUtils.java rename to strongback-tools/src/main/java/org/strongback/tools/utils/FileUtils.java diff --git a/strongback-tools/src/org/strongback/tools/utils/Parser.java b/strongback-tools/src/main/java/org/strongback/tools/utils/Parser.java similarity index 100% rename from strongback-tools/src/org/strongback/tools/utils/Parser.java rename to strongback-tools/src/main/java/org/strongback/tools/utils/Parser.java diff --git a/strongback-tools/src/org/strongback/tools/utils/Printer.java b/strongback-tools/src/main/java/org/strongback/tools/utils/Printer.java similarity index 100% rename from strongback-tools/src/org/strongback/tools/utils/Printer.java rename to strongback-tools/src/main/java/org/strongback/tools/utils/Printer.java diff --git a/strongback-tools/src/org/strongback/tools/utils/PropertiesUtils.java b/strongback-tools/src/main/java/org/strongback/tools/utils/PropertiesUtils.java similarity index 100% rename from strongback-tools/src/org/strongback/tools/utils/PropertiesUtils.java rename to strongback-tools/src/main/java/org/strongback/tools/utils/PropertiesUtils.java diff --git a/strongback-tools/src/org/strongback/tools/utils/Version.java b/strongback-tools/src/main/java/org/strongback/tools/utils/Version.java similarity index 100% rename from strongback-tools/src/org/strongback/tools/utils/Version.java rename to strongback-tools/src/main/java/org/strongback/tools/utils/Version.java diff --git a/strongback-tools/src/strongback.properties b/strongback-tools/src/main/resources/strongback.properties similarity index 100% rename from strongback-tools/src/strongback.properties rename to strongback-tools/src/main/resources/strongback.properties diff --git a/strongback-tools/test/org/strongback/tools/newproject/NewProjectTest.java b/strongback-tools/src/test/java/org/strongback/tools/newproject/NewProjectTest.java similarity index 100% rename from strongback-tools/test/org/strongback/tools/newproject/NewProjectTest.java rename to strongback-tools/src/test/java/org/strongback/tools/newproject/NewProjectTest.java diff --git a/strongback-tools/test/org/strongback/tools/utils/FileUtilsTest.java b/strongback-tools/src/test/java/org/strongback/tools/utils/FileUtilsTest.java similarity index 100% rename from strongback-tools/test/org/strongback/tools/utils/FileUtilsTest.java rename to strongback-tools/src/test/java/org/strongback/tools/utils/FileUtilsTest.java diff --git a/strongback-tools/test/org/strongback/tools/utils/VersionTest.java b/strongback-tools/src/test/java/org/strongback/tools/utils/VersionTest.java similarity index 100% rename from strongback-tools/test/org/strongback/tools/utils/VersionTest.java rename to strongback-tools/src/test/java/org/strongback/tools/utils/VersionTest.java diff --git a/strongback/src/org/strongback/AsyncEventRecorder.java b/strongback/src/main/java/org/strongback/AsyncEventRecorder.java similarity index 100% rename from strongback/src/org/strongback/AsyncEventRecorder.java rename to strongback/src/main/java/org/strongback/AsyncEventRecorder.java diff --git a/strongback/src/org/strongback/AsyncSwitchReactor.java b/strongback/src/main/java/org/strongback/AsyncSwitchReactor.java similarity index 100% rename from strongback/src/org/strongback/AsyncSwitchReactor.java rename to strongback/src/main/java/org/strongback/AsyncSwitchReactor.java diff --git a/strongback/src/org/strongback/DataRecordable.java b/strongback/src/main/java/org/strongback/DataRecordable.java similarity index 100% rename from strongback/src/org/strongback/DataRecordable.java rename to strongback/src/main/java/org/strongback/DataRecordable.java diff --git a/strongback/src/org/strongback/DataRecorder.java b/strongback/src/main/java/org/strongback/DataRecorder.java similarity index 100% rename from strongback/src/org/strongback/DataRecorder.java rename to strongback/src/main/java/org/strongback/DataRecorder.java diff --git a/strongback/src/org/strongback/DataRecorderChannel.java b/strongback/src/main/java/org/strongback/DataRecorderChannel.java similarity index 100% rename from strongback/src/org/strongback/DataRecorderChannel.java rename to strongback/src/main/java/org/strongback/DataRecorderChannel.java diff --git a/strongback/src/org/strongback/DataRecorderChannels.java b/strongback/src/main/java/org/strongback/DataRecorderChannels.java similarity index 100% rename from strongback/src/org/strongback/DataRecorderChannels.java rename to strongback/src/main/java/org/strongback/DataRecorderChannels.java diff --git a/strongback/src/org/strongback/DataRecorderDriver.java b/strongback/src/main/java/org/strongback/DataRecorderDriver.java similarity index 100% rename from strongback/src/org/strongback/DataRecorderDriver.java rename to strongback/src/main/java/org/strongback/DataRecorderDriver.java diff --git a/strongback/src/org/strongback/DataWriter.java b/strongback/src/main/java/org/strongback/DataWriter.java similarity index 100% rename from strongback/src/org/strongback/DataWriter.java rename to strongback/src/main/java/org/strongback/DataWriter.java diff --git a/strongback/src/org/strongback/EventRecorder.java b/strongback/src/main/java/org/strongback/EventRecorder.java similarity index 100% rename from strongback/src/org/strongback/EventRecorder.java rename to strongback/src/main/java/org/strongback/EventRecorder.java diff --git a/strongback/src/org/strongback/Executable.java b/strongback/src/main/java/org/strongback/Executable.java similarity index 100% rename from strongback/src/org/strongback/Executable.java rename to strongback/src/main/java/org/strongback/Executable.java diff --git a/strongback/src/org/strongback/Executables.java b/strongback/src/main/java/org/strongback/Executables.java similarity index 100% rename from strongback/src/org/strongback/Executables.java rename to strongback/src/main/java/org/strongback/Executables.java diff --git a/strongback/src/org/strongback/Executor.java b/strongback/src/main/java/org/strongback/Executor.java similarity index 100% rename from strongback/src/org/strongback/Executor.java rename to strongback/src/main/java/org/strongback/Executor.java diff --git a/strongback/src/org/strongback/ExecutorDriver.java b/strongback/src/main/java/org/strongback/ExecutorDriver.java similarity index 100% rename from strongback/src/org/strongback/ExecutorDriver.java rename to strongback/src/main/java/org/strongback/ExecutorDriver.java diff --git a/strongback/src/org/strongback/FileDataWriter.java b/strongback/src/main/java/org/strongback/FileDataWriter.java similarity index 100% rename from strongback/src/org/strongback/FileDataWriter.java rename to strongback/src/main/java/org/strongback/FileDataWriter.java diff --git a/strongback/src/org/strongback/FileEventWriter.java b/strongback/src/main/java/org/strongback/FileEventWriter.java similarity index 100% rename from strongback/src/org/strongback/FileEventWriter.java rename to strongback/src/main/java/org/strongback/FileEventWriter.java diff --git a/strongback/src/org/strongback/Logger.java b/strongback/src/main/java/org/strongback/Logger.java similarity index 100% rename from strongback/src/org/strongback/Logger.java rename to strongback/src/main/java/org/strongback/Logger.java diff --git a/strongback/src/org/strongback/MappedFileDataWriter.java b/strongback/src/main/java/org/strongback/MappedFileDataWriter.java similarity index 100% rename from strongback/src/org/strongback/MappedFileDataWriter.java rename to strongback/src/main/java/org/strongback/MappedFileDataWriter.java diff --git a/strongback/src/org/strongback/NoOpLogger.java b/strongback/src/main/java/org/strongback/NoOpLogger.java similarity index 100% rename from strongback/src/org/strongback/NoOpLogger.java rename to strongback/src/main/java/org/strongback/NoOpLogger.java diff --git a/strongback/src/org/strongback/Strongback.java b/strongback/src/main/java/org/strongback/Strongback.java similarity index 100% rename from strongback/src/org/strongback/Strongback.java rename to strongback/src/main/java/org/strongback/Strongback.java diff --git a/strongback/src/org/strongback/StrongbackRequirementException.java b/strongback/src/main/java/org/strongback/StrongbackRequirementException.java similarity index 100% rename from strongback/src/org/strongback/StrongbackRequirementException.java rename to strongback/src/main/java/org/strongback/StrongbackRequirementException.java diff --git a/strongback/src/org/strongback/SwitchReactor.java b/strongback/src/main/java/org/strongback/SwitchReactor.java similarity index 100% rename from strongback/src/org/strongback/SwitchReactor.java rename to strongback/src/main/java/org/strongback/SwitchReactor.java diff --git a/strongback/src/org/strongback/SystemLogger.java b/strongback/src/main/java/org/strongback/SystemLogger.java similarity index 100% rename from strongback/src/org/strongback/SystemLogger.java rename to strongback/src/main/java/org/strongback/SystemLogger.java diff --git a/strongback/src/org/strongback/annotation/Experimental.java b/strongback/src/main/java/org/strongback/annotation/Experimental.java similarity index 100% rename from strongback/src/org/strongback/annotation/Experimental.java rename to strongback/src/main/java/org/strongback/annotation/Experimental.java diff --git a/strongback/src/org/strongback/annotation/Immutable.java b/strongback/src/main/java/org/strongback/annotation/Immutable.java similarity index 100% rename from strongback/src/org/strongback/annotation/Immutable.java rename to strongback/src/main/java/org/strongback/annotation/Immutable.java diff --git a/strongback/src/org/strongback/annotation/NotImplemented.java b/strongback/src/main/java/org/strongback/annotation/NotImplemented.java similarity index 100% rename from strongback/src/org/strongback/annotation/NotImplemented.java rename to strongback/src/main/java/org/strongback/annotation/NotImplemented.java diff --git a/strongback/src/org/strongback/annotation/NotThreadSafe.java b/strongback/src/main/java/org/strongback/annotation/NotThreadSafe.java similarity index 100% rename from strongback/src/org/strongback/annotation/NotThreadSafe.java rename to strongback/src/main/java/org/strongback/annotation/NotThreadSafe.java diff --git a/strongback/src/org/strongback/annotation/ThreadSafe.java b/strongback/src/main/java/org/strongback/annotation/ThreadSafe.java similarity index 100% rename from strongback/src/org/strongback/annotation/ThreadSafe.java rename to strongback/src/main/java/org/strongback/annotation/ThreadSafe.java diff --git a/strongback/src/org/strongback/command/Command.java b/strongback/src/main/java/org/strongback/command/Command.java similarity index 100% rename from strongback/src/org/strongback/command/Command.java rename to strongback/src/main/java/org/strongback/command/Command.java diff --git a/strongback/src/org/strongback/command/CommandGroup.java b/strongback/src/main/java/org/strongback/command/CommandGroup.java similarity index 100% rename from strongback/src/org/strongback/command/CommandGroup.java rename to strongback/src/main/java/org/strongback/command/CommandGroup.java diff --git a/strongback/src/org/strongback/command/CommandRunner.java b/strongback/src/main/java/org/strongback/command/CommandRunner.java similarity index 100% rename from strongback/src/org/strongback/command/CommandRunner.java rename to strongback/src/main/java/org/strongback/command/CommandRunner.java diff --git a/strongback/src/org/strongback/command/CommandState.java b/strongback/src/main/java/org/strongback/command/CommandState.java similarity index 100% rename from strongback/src/org/strongback/command/CommandState.java rename to strongback/src/main/java/org/strongback/command/CommandState.java diff --git a/strongback/src/org/strongback/command/Commands.java b/strongback/src/main/java/org/strongback/command/Commands.java similarity index 100% rename from strongback/src/org/strongback/command/Commands.java rename to strongback/src/main/java/org/strongback/command/Commands.java diff --git a/strongback/src/org/strongback/command/ControllerCommand.java b/strongback/src/main/java/org/strongback/command/ControllerCommand.java similarity index 100% rename from strongback/src/org/strongback/command/ControllerCommand.java rename to strongback/src/main/java/org/strongback/command/ControllerCommand.java diff --git a/strongback/src/org/strongback/command/Requirable.java b/strongback/src/main/java/org/strongback/command/Requirable.java similarity index 100% rename from strongback/src/org/strongback/command/Requirable.java rename to strongback/src/main/java/org/strongback/command/Requirable.java diff --git a/strongback/src/org/strongback/command/Scheduler.java b/strongback/src/main/java/org/strongback/command/Scheduler.java similarity index 100% rename from strongback/src/org/strongback/command/Scheduler.java rename to strongback/src/main/java/org/strongback/command/Scheduler.java diff --git a/strongback/src/org/strongback/command/UnmanagedControllerCommand.java b/strongback/src/main/java/org/strongback/command/UnmanagedControllerCommand.java similarity index 100% rename from strongback/src/org/strongback/command/UnmanagedControllerCommand.java rename to strongback/src/main/java/org/strongback/command/UnmanagedControllerCommand.java diff --git a/strongback/src/org/strongback/components/Accelerometer.java b/strongback/src/main/java/org/strongback/components/Accelerometer.java similarity index 100% rename from strongback/src/org/strongback/components/Accelerometer.java rename to strongback/src/main/java/org/strongback/components/Accelerometer.java diff --git a/strongback/src/org/strongback/components/AngleSensor.java b/strongback/src/main/java/org/strongback/components/AngleSensor.java similarity index 100% rename from strongback/src/org/strongback/components/AngleSensor.java rename to strongback/src/main/java/org/strongback/components/AngleSensor.java diff --git a/strongback/src/org/strongback/components/Clock.java b/strongback/src/main/java/org/strongback/components/Clock.java similarity index 100% rename from strongback/src/org/strongback/components/Clock.java rename to strongback/src/main/java/org/strongback/components/Clock.java diff --git a/strongback/src/org/strongback/components/Compass.java b/strongback/src/main/java/org/strongback/components/Compass.java similarity index 100% rename from strongback/src/org/strongback/components/Compass.java rename to strongback/src/main/java/org/strongback/components/Compass.java diff --git a/strongback/src/org/strongback/components/Counter.java b/strongback/src/main/java/org/strongback/components/Counter.java similarity index 100% rename from strongback/src/org/strongback/components/Counter.java rename to strongback/src/main/java/org/strongback/components/Counter.java diff --git a/strongback/src/org/strongback/components/CurrentSensor.java b/strongback/src/main/java/org/strongback/components/CurrentSensor.java similarity index 100% rename from strongback/src/org/strongback/components/CurrentSensor.java rename to strongback/src/main/java/org/strongback/components/CurrentSensor.java diff --git a/strongback/src/org/strongback/components/DistanceSensor.java b/strongback/src/main/java/org/strongback/components/DistanceSensor.java similarity index 100% rename from strongback/src/org/strongback/components/DistanceSensor.java rename to strongback/src/main/java/org/strongback/components/DistanceSensor.java diff --git a/strongback/src/org/strongback/components/Fuse.java b/strongback/src/main/java/org/strongback/components/Fuse.java similarity index 100% rename from strongback/src/org/strongback/components/Fuse.java rename to strongback/src/main/java/org/strongback/components/Fuse.java diff --git a/strongback/src/org/strongback/components/Gyroscope.java b/strongback/src/main/java/org/strongback/components/Gyroscope.java similarity index 100% rename from strongback/src/org/strongback/components/Gyroscope.java rename to strongback/src/main/java/org/strongback/components/Gyroscope.java diff --git a/strongback/src/org/strongback/components/LimitedMotor.java b/strongback/src/main/java/org/strongback/components/LimitedMotor.java similarity index 100% rename from strongback/src/org/strongback/components/LimitedMotor.java rename to strongback/src/main/java/org/strongback/components/LimitedMotor.java diff --git a/strongback/src/org/strongback/components/Motor.java b/strongback/src/main/java/org/strongback/components/Motor.java similarity index 100% rename from strongback/src/org/strongback/components/Motor.java rename to strongback/src/main/java/org/strongback/components/Motor.java diff --git a/strongback/src/org/strongback/components/PneumaticsModule.java b/strongback/src/main/java/org/strongback/components/PneumaticsModule.java similarity index 100% rename from strongback/src/org/strongback/components/PneumaticsModule.java rename to strongback/src/main/java/org/strongback/components/PneumaticsModule.java diff --git a/strongback/src/org/strongback/components/PowerPanel.java b/strongback/src/main/java/org/strongback/components/PowerPanel.java similarity index 100% rename from strongback/src/org/strongback/components/PowerPanel.java rename to strongback/src/main/java/org/strongback/components/PowerPanel.java diff --git a/strongback/src/org/strongback/components/Relay.java b/strongback/src/main/java/org/strongback/components/Relay.java similarity index 100% rename from strongback/src/org/strongback/components/Relay.java rename to strongback/src/main/java/org/strongback/components/Relay.java diff --git a/strongback/src/org/strongback/components/Solenoid.java b/strongback/src/main/java/org/strongback/components/Solenoid.java similarity index 100% rename from strongback/src/org/strongback/components/Solenoid.java rename to strongback/src/main/java/org/strongback/components/Solenoid.java diff --git a/strongback/src/org/strongback/components/SolenoidWithPosition.java b/strongback/src/main/java/org/strongback/components/SolenoidWithPosition.java similarity index 100% rename from strongback/src/org/strongback/components/SolenoidWithPosition.java rename to strongback/src/main/java/org/strongback/components/SolenoidWithPosition.java diff --git a/strongback/src/org/strongback/components/SpeedController.java b/strongback/src/main/java/org/strongback/components/SpeedController.java similarity index 100% rename from strongback/src/org/strongback/components/SpeedController.java rename to strongback/src/main/java/org/strongback/components/SpeedController.java diff --git a/strongback/src/org/strongback/components/SpeedSensor.java b/strongback/src/main/java/org/strongback/components/SpeedSensor.java similarity index 100% rename from strongback/src/org/strongback/components/SpeedSensor.java rename to strongback/src/main/java/org/strongback/components/SpeedSensor.java diff --git a/strongback/src/org/strongback/components/Stoppable.java b/strongback/src/main/java/org/strongback/components/Stoppable.java similarity index 100% rename from strongback/src/org/strongback/components/Stoppable.java rename to strongback/src/main/java/org/strongback/components/Stoppable.java diff --git a/strongback/src/org/strongback/components/Switch.java b/strongback/src/main/java/org/strongback/components/Switch.java similarity index 100% rename from strongback/src/org/strongback/components/Switch.java rename to strongback/src/main/java/org/strongback/components/Switch.java diff --git a/strongback/src/org/strongback/components/TalonSRX.java b/strongback/src/main/java/org/strongback/components/TalonSRX.java similarity index 100% rename from strongback/src/org/strongback/components/TalonSRX.java rename to strongback/src/main/java/org/strongback/components/TalonSRX.java diff --git a/strongback/src/org/strongback/components/TemperatureSensor.java b/strongback/src/main/java/org/strongback/components/TemperatureSensor.java similarity index 100% rename from strongback/src/org/strongback/components/TemperatureSensor.java rename to strongback/src/main/java/org/strongback/components/TemperatureSensor.java diff --git a/strongback/src/org/strongback/components/ThreeAxisAcceleration.java b/strongback/src/main/java/org/strongback/components/ThreeAxisAcceleration.java similarity index 100% rename from strongback/src/org/strongback/components/ThreeAxisAcceleration.java rename to strongback/src/main/java/org/strongback/components/ThreeAxisAcceleration.java diff --git a/strongback/src/org/strongback/components/ThreeAxisAccelerometer.java b/strongback/src/main/java/org/strongback/components/ThreeAxisAccelerometer.java similarity index 100% rename from strongback/src/org/strongback/components/ThreeAxisAccelerometer.java rename to strongback/src/main/java/org/strongback/components/ThreeAxisAccelerometer.java diff --git a/strongback/src/org/strongback/components/TwoAxisAcceleration.java b/strongback/src/main/java/org/strongback/components/TwoAxisAcceleration.java similarity index 100% rename from strongback/src/org/strongback/components/TwoAxisAcceleration.java rename to strongback/src/main/java/org/strongback/components/TwoAxisAcceleration.java diff --git a/strongback/src/org/strongback/components/TwoAxisAccelerometer.java b/strongback/src/main/java/org/strongback/components/TwoAxisAccelerometer.java similarity index 100% rename from strongback/src/org/strongback/components/TwoAxisAccelerometer.java rename to strongback/src/main/java/org/strongback/components/TwoAxisAccelerometer.java diff --git a/strongback/src/org/strongback/components/VoltageSensor.java b/strongback/src/main/java/org/strongback/components/VoltageSensor.java similarity index 100% rename from strongback/src/org/strongback/components/VoltageSensor.java rename to strongback/src/main/java/org/strongback/components/VoltageSensor.java diff --git a/strongback/src/org/strongback/components/Zeroable.java b/strongback/src/main/java/org/strongback/components/Zeroable.java similarity index 100% rename from strongback/src/org/strongback/components/Zeroable.java rename to strongback/src/main/java/org/strongback/components/Zeroable.java diff --git a/strongback/src/org/strongback/components/package-info.java b/strongback/src/main/java/org/strongback/components/package-info.java similarity index 100% rename from strongback/src/org/strongback/components/package-info.java rename to strongback/src/main/java/org/strongback/components/package-info.java diff --git a/strongback/src/org/strongback/components/ui/ContinuousRange.java b/strongback/src/main/java/org/strongback/components/ui/ContinuousRange.java similarity index 100% rename from strongback/src/org/strongback/components/ui/ContinuousRange.java rename to strongback/src/main/java/org/strongback/components/ui/ContinuousRange.java diff --git a/strongback/src/org/strongback/components/ui/DirectionalAxis.java b/strongback/src/main/java/org/strongback/components/ui/DirectionalAxis.java similarity index 100% rename from strongback/src/org/strongback/components/ui/DirectionalAxis.java rename to strongback/src/main/java/org/strongback/components/ui/DirectionalAxis.java diff --git a/strongback/src/org/strongback/components/ui/FlightStick.java b/strongback/src/main/java/org/strongback/components/ui/FlightStick.java similarity index 100% rename from strongback/src/org/strongback/components/ui/FlightStick.java rename to strongback/src/main/java/org/strongback/components/ui/FlightStick.java diff --git a/strongback/src/org/strongback/components/ui/Gamepad.java b/strongback/src/main/java/org/strongback/components/ui/Gamepad.java similarity index 100% rename from strongback/src/org/strongback/components/ui/Gamepad.java rename to strongback/src/main/java/org/strongback/components/ui/Gamepad.java diff --git a/strongback/src/org/strongback/components/ui/InputDevice.java b/strongback/src/main/java/org/strongback/components/ui/InputDevice.java similarity index 100% rename from strongback/src/org/strongback/components/ui/InputDevice.java rename to strongback/src/main/java/org/strongback/components/ui/InputDevice.java diff --git a/strongback/src/org/strongback/control/Controller.java b/strongback/src/main/java/org/strongback/control/Controller.java similarity index 100% rename from strongback/src/org/strongback/control/Controller.java rename to strongback/src/main/java/org/strongback/control/Controller.java diff --git a/strongback/src/org/strongback/control/PIDController.java b/strongback/src/main/java/org/strongback/control/PIDController.java similarity index 100% rename from strongback/src/org/strongback/control/PIDController.java rename to strongback/src/main/java/org/strongback/control/PIDController.java diff --git a/strongback/src/org/strongback/control/SoftwarePIDController.java b/strongback/src/main/java/org/strongback/control/SoftwarePIDController.java similarity index 100% rename from strongback/src/org/strongback/control/SoftwarePIDController.java rename to strongback/src/main/java/org/strongback/control/SoftwarePIDController.java diff --git a/strongback/src/org/strongback/control/TalonController.java b/strongback/src/main/java/org/strongback/control/TalonController.java similarity index 100% rename from strongback/src/org/strongback/control/TalonController.java rename to strongback/src/main/java/org/strongback/control/TalonController.java diff --git a/strongback/src/org/strongback/drive/MecanumDrive.java b/strongback/src/main/java/org/strongback/drive/MecanumDrive.java similarity index 100% rename from strongback/src/org/strongback/drive/MecanumDrive.java rename to strongback/src/main/java/org/strongback/drive/MecanumDrive.java diff --git a/strongback/src/org/strongback/drive/TankDrive.java b/strongback/src/main/java/org/strongback/drive/TankDrive.java similarity index 100% rename from strongback/src/org/strongback/drive/TankDrive.java rename to strongback/src/main/java/org/strongback/drive/TankDrive.java diff --git a/strongback/src/org/strongback/function/DoubleBiFunction.java b/strongback/src/main/java/org/strongback/function/DoubleBiFunction.java similarity index 100% rename from strongback/src/org/strongback/function/DoubleBiFunction.java rename to strongback/src/main/java/org/strongback/function/DoubleBiFunction.java diff --git a/strongback/src/org/strongback/function/DoubleToDoubleFunction.java b/strongback/src/main/java/org/strongback/function/DoubleToDoubleFunction.java similarity index 100% rename from strongback/src/org/strongback/function/DoubleToDoubleFunction.java rename to strongback/src/main/java/org/strongback/function/DoubleToDoubleFunction.java diff --git a/strongback/src/org/strongback/function/IntBiFunction.java b/strongback/src/main/java/org/strongback/function/IntBiFunction.java similarity index 100% rename from strongback/src/org/strongback/function/IntBiFunction.java rename to strongback/src/main/java/org/strongback/function/IntBiFunction.java diff --git a/strongback/src/org/strongback/function/IntToBooleanFunction.java b/strongback/src/main/java/org/strongback/function/IntToBooleanFunction.java similarity index 100% rename from strongback/src/org/strongback/function/IntToBooleanFunction.java rename to strongback/src/main/java/org/strongback/function/IntToBooleanFunction.java diff --git a/strongback/src/org/strongback/function/IntToIntFunction.java b/strongback/src/main/java/org/strongback/function/IntToIntFunction.java similarity index 100% rename from strongback/src/org/strongback/function/IntToIntFunction.java rename to strongback/src/main/java/org/strongback/function/IntToIntFunction.java diff --git a/strongback/src/org/strongback/hardware/Hardware.java b/strongback/src/main/java/org/strongback/hardware/Hardware.java similarity index 100% rename from strongback/src/org/strongback/hardware/Hardware.java rename to strongback/src/main/java/org/strongback/hardware/Hardware.java diff --git a/strongback/src/org/strongback/hardware/HardwareDoubleSolenoid.java b/strongback/src/main/java/org/strongback/hardware/HardwareDoubleSolenoid.java similarity index 100% rename from strongback/src/org/strongback/hardware/HardwareDoubleSolenoid.java rename to strongback/src/main/java/org/strongback/hardware/HardwareDoubleSolenoid.java diff --git a/strongback/src/org/strongback/hardware/HardwareMotor.java b/strongback/src/main/java/org/strongback/hardware/HardwareMotor.java similarity index 100% rename from strongback/src/org/strongback/hardware/HardwareMotor.java rename to strongback/src/main/java/org/strongback/hardware/HardwareMotor.java diff --git a/strongback/src/org/strongback/hardware/HardwarePneumaticsModule.java b/strongback/src/main/java/org/strongback/hardware/HardwarePneumaticsModule.java similarity index 100% rename from strongback/src/org/strongback/hardware/HardwarePneumaticsModule.java rename to strongback/src/main/java/org/strongback/hardware/HardwarePneumaticsModule.java diff --git a/strongback/src/org/strongback/hardware/HardwareRelay.java b/strongback/src/main/java/org/strongback/hardware/HardwareRelay.java similarity index 100% rename from strongback/src/org/strongback/hardware/HardwareRelay.java rename to strongback/src/main/java/org/strongback/hardware/HardwareRelay.java diff --git a/strongback/src/org/strongback/hardware/HardwareSpark.java b/strongback/src/main/java/org/strongback/hardware/HardwareSpark.java similarity index 100% rename from strongback/src/org/strongback/hardware/HardwareSpark.java rename to strongback/src/main/java/org/strongback/hardware/HardwareSpark.java diff --git a/strongback/src/org/strongback/hardware/HardwareTalonController.java b/strongback/src/main/java/org/strongback/hardware/HardwareTalonController.java similarity index 100% rename from strongback/src/org/strongback/hardware/HardwareTalonController.java rename to strongback/src/main/java/org/strongback/hardware/HardwareTalonController.java diff --git a/strongback/src/org/strongback/hardware/HardwareTalonSRX.java b/strongback/src/main/java/org/strongback/hardware/HardwareTalonSRX.java similarity index 100% rename from strongback/src/org/strongback/hardware/HardwareTalonSRX.java rename to strongback/src/main/java/org/strongback/hardware/HardwareTalonSRX.java diff --git a/strongback/src/org/strongback/util/Collections.java b/strongback/src/main/java/org/strongback/util/Collections.java similarity index 100% rename from strongback/src/org/strongback/util/Collections.java rename to strongback/src/main/java/org/strongback/util/Collections.java diff --git a/strongback/src/org/strongback/util/Iterators.java b/strongback/src/main/java/org/strongback/util/Iterators.java similarity index 100% rename from strongback/src/org/strongback/util/Iterators.java rename to strongback/src/main/java/org/strongback/util/Iterators.java diff --git a/strongback/src/org/strongback/util/Metronome.java b/strongback/src/main/java/org/strongback/util/Metronome.java similarity index 100% rename from strongback/src/org/strongback/util/Metronome.java rename to strongback/src/main/java/org/strongback/util/Metronome.java diff --git a/strongback/src/org/strongback/util/Values.java b/strongback/src/main/java/org/strongback/util/Values.java similarity index 100% rename from strongback/src/org/strongback/util/Values.java rename to strongback/src/main/java/org/strongback/util/Values.java From eea0eed540530c2e766f8d0c3e7eaf55f7a30a93 Mon Sep 17 00:00:00 2001 From: "Mcshane, James P" Date: Wed, 8 Mar 2017 21:49:15 -0600 Subject: [PATCH 2/8] Creating gradle project structure and passing build that runs all the tests --- .gitignore | 1 + build.gradle | 27 ++++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53638 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 160 +++++++++++++++++++++++ gradlew.bat | 90 +++++++++++++ settings.gradle | 5 + strongback-examples/build.gradle | 3 + strongback-testing/build.gradle | 3 + strongback-tests/build.gradle | 4 + 10 files changed, 299 insertions(+) create mode 100755 build.gradle create mode 100755 gradle/wrapper/gradle-wrapper.jar create mode 100755 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100755 gradlew.bat create mode 100644 settings.gradle create mode 100644 strongback-examples/build.gradle create mode 100644 strongback-testing/build.gradle create mode 100644 strongback-tests/build.gradle diff --git a/.gitignore b/.gitignore index 19bd778..a99373d 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ build/ deploy/ target/ *.class +.gradle # The 3rd party dependencies should never be committed libs/wpilib diff --git a/build.gradle b/build.gradle new file mode 100755 index 0000000..910cda3 --- /dev/null +++ b/build.gradle @@ -0,0 +1,27 @@ +def baseDir = project.projectDir + +allprojects { + apply plugin: "java" + + sourceCompatibility = 1.8 + targetCompatibility = 1.8 + + repositories { + mavenCentral() + } + + + dependencies { + compile fileTree(dir: "${baseDir}/libs/ctre", include: '**/*.jar') + compile fileTree(dir: "${baseDir}/libs/nvax-mxp", include: '**/*.jar') + compile fileTree(dir: "${baseDir}/libs/wpilib", include: '**/*.jar') + compile('io.dropwizard.metrics:metrics-core:3.1.0') + + testCompile('org.easytesting:fest-assert:1.4') + compile('junit:junit:4.11') + } + +} +task wrapper(type: Wrapper) { + gradleVersion = '2.10' +} diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100755 index 0000000000000000000000000000000000000000..e8c6bf7bb47dff6b81c2cf7a349eb7e912c9fbe2 GIT binary patch literal 53638 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%0AB1q=av0)K=-*!|(RDoglJ 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 \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100755 index 0000000..8a0b282 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..b58b187 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,5 @@ +include ':strongback' +include ':strongback-testing' +include ':strongback-tests' +include ':strongback-tools' +include ':strongback-examples' \ No newline at end of file diff --git a/strongback-examples/build.gradle b/strongback-examples/build.gradle new file mode 100644 index 0000000..029763a --- /dev/null +++ b/strongback-examples/build.gradle @@ -0,0 +1,3 @@ +dependencies { + compile project(":strongback") +} \ No newline at end of file diff --git a/strongback-testing/build.gradle b/strongback-testing/build.gradle new file mode 100644 index 0000000..029763a --- /dev/null +++ b/strongback-testing/build.gradle @@ -0,0 +1,3 @@ +dependencies { + compile project(":strongback") +} \ No newline at end of file diff --git a/strongback-tests/build.gradle b/strongback-tests/build.gradle new file mode 100644 index 0000000..fbe59db --- /dev/null +++ b/strongback-tests/build.gradle @@ -0,0 +1,4 @@ +dependencies { + compile project(":strongback") + compile project(":strongback-testing") +} \ No newline at end of file From e0530581f5e07c976f9da5b9b0fe573e733635fd Mon Sep 17 00:00:00 2001 From: "Mcshane, James P" Date: Wed, 8 Mar 2017 21:51:23 -0600 Subject: [PATCH 3/8] Having the travis build verify the gradle build passes as well --- .travis.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 524d20e..bbde734 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,6 +9,8 @@ before_install: - ant -version install: ant deps -script: ant test +script: + - "ant test" + - "./gradlew build" jdk: - oraclejdk8 From 571e31b4041b3c5d1165418e24a69e0300b264fe Mon Sep 17 00:00:00 2001 From: "Mcshane, James P" Date: Thu, 9 Mar 2017 16:42:31 -0600 Subject: [PATCH 4/8] Creating maven structure for publishing artifacts --- build.gradle | 16 +++++----------- strongback-testing/build.gradle | 4 ++++ strongback-tools/build.gradle | 3 +++ strongback/build.gradle | 13 +++++++++++++ 4 files changed, 25 insertions(+), 11 deletions(-) create mode 100644 strongback-tools/build.gradle create mode 100644 strongback/build.gradle diff --git a/build.gradle b/build.gradle index 910cda3..1014c02 100755 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,6 @@ -def baseDir = project.projectDir +ext { + baseDir = project.projectDir +} allprojects { apply plugin: "java" @@ -10,16 +12,8 @@ allprojects { mavenCentral() } - - dependencies { - compile fileTree(dir: "${baseDir}/libs/ctre", include: '**/*.jar') - compile fileTree(dir: "${baseDir}/libs/nvax-mxp", include: '**/*.jar') - compile fileTree(dir: "${baseDir}/libs/wpilib", include: '**/*.jar') - compile('io.dropwizard.metrics:metrics-core:3.1.0') - - testCompile('org.easytesting:fest-assert:1.4') - compile('junit:junit:4.11') - } + group = "org.strongback" + version = "2017.2.1-SNAPSHOT" } task wrapper(type: Wrapper) { diff --git a/strongback-testing/build.gradle b/strongback-testing/build.gradle index 029763a..2e84707 100644 --- a/strongback-testing/build.gradle +++ b/strongback-testing/build.gradle @@ -1,3 +1,7 @@ +plugins { + id "maven" +} + dependencies { compile project(":strongback") } \ No newline at end of file diff --git a/strongback-tools/build.gradle b/strongback-tools/build.gradle new file mode 100644 index 0000000..d72ab41 --- /dev/null +++ b/strongback-tools/build.gradle @@ -0,0 +1,3 @@ +plugins { + id "maven" +} \ No newline at end of file diff --git a/strongback/build.gradle b/strongback/build.gradle new file mode 100644 index 0000000..3959f90 --- /dev/null +++ b/strongback/build.gradle @@ -0,0 +1,13 @@ +plugins { + id "maven" +} + +dependencies { + compile fileTree(dir: "${project.baseDir}/libs/ctre", include: '**/*.jar') + compile fileTree(dir: "${project.baseDir}/libs/nvax-mxp", include: '**/*.jar') + compile fileTree(dir: "${project.baseDir}/libs/wpilib", include: '**/*.jar') + compile('io.dropwizard.metrics:metrics-core:3.1.0') + + testCompile('org.easytesting:fest-assert:1.4') + compile('junit:junit:4.11') +} From 74313a4331a94f7b5b93bb7d7560ebb632e267bf Mon Sep 17 00:00:00 2001 From: "Mcshane, James P" Date: Sat, 11 Mar 2017 00:32:23 -0600 Subject: [PATCH 5/8] Downloading external files using gradle --- build.gradle | 8 +++- strongback/build.gradle | 104 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 111 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 1014c02..99095d7 100755 --- a/build.gradle +++ b/build.gradle @@ -1,9 +1,14 @@ +plugins { + id 'java' +} + ext { baseDir = project.projectDir } allprojects { - apply plugin: "java" + + apply plugin: 'java' sourceCompatibility = 1.8 targetCompatibility = 1.8 @@ -16,6 +21,7 @@ allprojects { version = "2017.2.1-SNAPSHOT" } + task wrapper(type: Wrapper) { gradleVersion = '2.10' } diff --git a/strongback/build.gradle b/strongback/build.gradle index 3959f90..a15cbf8 100644 --- a/strongback/build.gradle +++ b/strongback/build.gradle @@ -1,7 +1,18 @@ +buildscript { + repositories { + mavenCentral() + } + dependencies { + classpath 'org.codehaus.groovy.modules.http-builder:http-builder:0.7.1' + } +} + plugins { id "maven" } +apply plugin: DownloadPlugin + dependencies { compile fileTree(dir: "${project.baseDir}/libs/ctre", include: '**/*.jar') compile fileTree(dir: "${project.baseDir}/libs/nvax-mxp", include: '**/*.jar') @@ -11,3 +22,96 @@ dependencies { testCompile('org.easytesting:fest-assert:1.4') compile('junit:junit:4.11') } + + +import groovyx.net.http.* +import groovy.xml.* + +//plugins/_.jar +//plugins/edu.wpi.first.wpilib.plugins.java_2017.3.1.jar + +class DownloadPlugin implements Plugin { + def rootUrl = 'http://first.wpi.edu/FRC/roborio/release/eclipse/' + void apply(Project project) { + + project.task('hello') { + doLast { + } + } + + def wpiLibFile = new File(project.getBuildDir().getAbsolutePath() + "/wpilib/lib/WPILib.jar"); + + if (wpiLibFile.exists()) { + println "Already downloaded wpilib" + } else { + def client = new HTTPBuilder(rootUrl) + client.headers = [Accept : 'application/xml'] + + def javaUrl = client.get( path : 'site.xml') {resp, xml -> + xml.feature + .find { it.@id == 'edu.wpi.first.wpilib.plugins.java.feature'} + .@url.text() + } + + client.parser.'application/java-archive' = client.parser.defaultParser + client.headers = [Accept : 'application/java-archive'] + + def jar = client.get( path: javaUrl) + def outputFile = new File(project.getBuildDir(), 'wpilib-plugin.jar') + outputFile.parentFile.mkdirs() + outputFile.createNewFile() + outputFile.append jar + + def zipFile = new java.util.zip.ZipFile(outputFile) + def zipEntry = zipFile.entries().find { it.name == "feature.xml"} + def featureText = zipFile.getInputStream(zipEntry).text + def featureXml = new XmlParser().parseText(featureText) + + def id = featureXml.plugin.get(0).@id + def version = featureXml.plugin.get(0).@version + outputFile.delete() + + def javaDep = client.get( path: "plugins/${id}_${version}.jar") + def pluginFile = new File(project.getBuildDir(), 'wpi-java-plugin.jar') + pluginFile.createNewFile() + pluginFile.append javaDep + + def pluginZip = new java.util.zip.ZipFile(pluginFile) + def javaZip = pluginZip.entries().find {it.name == "resources/java.zip" } + def javaZipBytes = pluginZip.getInputStream(javaZip).bytes + def zipOutput = new File(project.getBuildDir(), 'zipOut/') + def javaZipFile = new File(zipOutput, 'java.zip') + javaZipFile.parentFile.mkdirs() + javaZipFile.createNewFile() + javaZipFile.append javaZipBytes + + pluginFile.delete() + + def outputDir = new File(project.getBuildDir(), 'wpilib/') + outputDir.mkdirs() + def zip = new java.util.zip.ZipFile(javaZipFile) + zip.entries().each{ + if (!it.isDirectory()){ + def fOut = new File(outputDir.getAbsolutePath()+ File.separator + it.name) + //create output dir if not exists + new File(fOut.parent).mkdirs() + fOut.createNewFile() + //println "name:${it.name}, size:${it.size}" + def bytes = zip.getInputStream(it).bytes //println zip.getInputStream(it).text + fOut.append bytes + } + } + zip.close() + + zipOutput.delete() + } + project.dependencies.add 'compile', project.fileTree(dir: 'build/wpilib/lib', include: '**/*.jar', exclude: '**/*-sources.jar') + + // def id = featureXml.plugin[0].@id + // def version = featureXml.plugin[0].@version + // println id + " " + version + // Add the 'greeting' extension object + // project.extensions.create("greeting", DownloadPluginExtension) + // Add a task that uses the configuration + } +} From f41c626ea1d5401d5d6416642fc7983efe741203 Mon Sep 17 00:00:00 2001 From: "Mcshane, James P" Date: Sat, 11 Mar 2017 12:30:58 -0600 Subject: [PATCH 6/8] Completing wpilib work by adding the gradlerio plugin, which can reference any currently deployed version of wpilib to compile against --- build.gradle | 17 ++++-- strongback-tests/build.gradle | 4 +- strongback-tools/build.gradle | 2 +- strongback/build.gradle | 111 ++-------------------------------- 4 files changed, 20 insertions(+), 114 deletions(-) diff --git a/build.gradle b/build.gradle index 99095d7..c66a283 100755 --- a/build.gradle +++ b/build.gradle @@ -1,12 +1,8 @@ -plugins { - id 'java' -} - ext { baseDir = project.projectDir } -allprojects { +subprojects { apply plugin: 'java' @@ -20,6 +16,17 @@ allprojects { group = "org.strongback" version = "2017.2.1-SNAPSHOT" + repositories { + maven { + url 'http://first.wpi.edu/FRC/roborio/maven/release' + } + } + + dependencies { + testCompile('junit:junit:4.12') + testCompile('org.easytesting:fest-assert:1.4') + } + } task wrapper(type: Wrapper) { diff --git a/strongback-tests/build.gradle b/strongback-tests/build.gradle index fbe59db..fc3c898 100644 --- a/strongback-tests/build.gradle +++ b/strongback-tests/build.gradle @@ -1,4 +1,4 @@ dependencies { - compile project(":strongback") - compile project(":strongback-testing") + testCompile project(":strongback") + testCompile project(":strongback-testing") } \ No newline at end of file diff --git a/strongback-tools/build.gradle b/strongback-tools/build.gradle index d72ab41..c0b1b9c 100644 --- a/strongback-tools/build.gradle +++ b/strongback-tools/build.gradle @@ -1,3 +1,3 @@ plugins { id "maven" -} \ No newline at end of file +} diff --git a/strongback/build.gradle b/strongback/build.gradle index a15cbf8..950f81c 100644 --- a/strongback/build.gradle +++ b/strongback/build.gradle @@ -1,117 +1,16 @@ -buildscript { - repositories { - mavenCentral() - } - dependencies { - classpath 'org.codehaus.groovy.modules.http-builder:http-builder:0.7.1' - } -} - plugins { id "maven" + id "jaci.openrio.gradle.GradleRIO" version "2017.1.5" } -apply plugin: DownloadPlugin +wpi { + wpilibVersion = '2017.3.1' +} dependencies { + compile wpilib() compile fileTree(dir: "${project.baseDir}/libs/ctre", include: '**/*.jar') compile fileTree(dir: "${project.baseDir}/libs/nvax-mxp", include: '**/*.jar') - compile fileTree(dir: "${project.baseDir}/libs/wpilib", include: '**/*.jar') compile('io.dropwizard.metrics:metrics-core:3.1.0') - - testCompile('org.easytesting:fest-assert:1.4') compile('junit:junit:4.11') } - - -import groovyx.net.http.* -import groovy.xml.* - -//plugins/_.jar -//plugins/edu.wpi.first.wpilib.plugins.java_2017.3.1.jar - -class DownloadPlugin implements Plugin { - def rootUrl = 'http://first.wpi.edu/FRC/roborio/release/eclipse/' - void apply(Project project) { - - project.task('hello') { - doLast { - } - } - - def wpiLibFile = new File(project.getBuildDir().getAbsolutePath() + "/wpilib/lib/WPILib.jar"); - - if (wpiLibFile.exists()) { - println "Already downloaded wpilib" - } else { - def client = new HTTPBuilder(rootUrl) - client.headers = [Accept : 'application/xml'] - - def javaUrl = client.get( path : 'site.xml') {resp, xml -> - xml.feature - .find { it.@id == 'edu.wpi.first.wpilib.plugins.java.feature'} - .@url.text() - } - - client.parser.'application/java-archive' = client.parser.defaultParser - client.headers = [Accept : 'application/java-archive'] - - def jar = client.get( path: javaUrl) - def outputFile = new File(project.getBuildDir(), 'wpilib-plugin.jar') - outputFile.parentFile.mkdirs() - outputFile.createNewFile() - outputFile.append jar - - def zipFile = new java.util.zip.ZipFile(outputFile) - def zipEntry = zipFile.entries().find { it.name == "feature.xml"} - def featureText = zipFile.getInputStream(zipEntry).text - def featureXml = new XmlParser().parseText(featureText) - - def id = featureXml.plugin.get(0).@id - def version = featureXml.plugin.get(0).@version - outputFile.delete() - - def javaDep = client.get( path: "plugins/${id}_${version}.jar") - def pluginFile = new File(project.getBuildDir(), 'wpi-java-plugin.jar') - pluginFile.createNewFile() - pluginFile.append javaDep - - def pluginZip = new java.util.zip.ZipFile(pluginFile) - def javaZip = pluginZip.entries().find {it.name == "resources/java.zip" } - def javaZipBytes = pluginZip.getInputStream(javaZip).bytes - def zipOutput = new File(project.getBuildDir(), 'zipOut/') - def javaZipFile = new File(zipOutput, 'java.zip') - javaZipFile.parentFile.mkdirs() - javaZipFile.createNewFile() - javaZipFile.append javaZipBytes - - pluginFile.delete() - - def outputDir = new File(project.getBuildDir(), 'wpilib/') - outputDir.mkdirs() - def zip = new java.util.zip.ZipFile(javaZipFile) - zip.entries().each{ - if (!it.isDirectory()){ - def fOut = new File(outputDir.getAbsolutePath()+ File.separator + it.name) - //create output dir if not exists - new File(fOut.parent).mkdirs() - fOut.createNewFile() - //println "name:${it.name}, size:${it.size}" - def bytes = zip.getInputStream(it).bytes //println zip.getInputStream(it).text - fOut.append bytes - } - } - zip.close() - - zipOutput.delete() - } - project.dependencies.add 'compile', project.fileTree(dir: 'build/wpilib/lib', include: '**/*.jar', exclude: '**/*-sources.jar') - - // def id = featureXml.plugin[0].@id - // def version = featureXml.plugin[0].@version - // println id + " " + version - // Add the 'greeting' extension object - // project.extensions.create("greeting", DownloadPluginExtension) - // Add a task that uses the configuration - } -} From d105bfe606be088bac1a8c025ab872475b521d90 Mon Sep 17 00:00:00 2001 From: "Mcshane, James P" Date: Sat, 11 Mar 2017 13:22:35 -0600 Subject: [PATCH 7/8] Completing refactoring for the correct amount of gradle dependencies on existing ant tasks, while using the gradle plugin for wpilib to specify the exact version rather than downloading from releases. This will force compilation of strongback to specific wpilib version and can publish multiple artifacts against these versions --- build.gradle | 5 +++ build.properties | 12 -------- build.xml | 62 ++------------------------------------ strongback/build.gradle | 5 ++- third-party.xml | 67 +++++++++++++++++++++++++++++++++++++++++ thirdparty.properties | 11 +++++++ 6 files changed, 89 insertions(+), 73 deletions(-) create mode 100644 third-party.xml create mode 100644 thirdparty.properties diff --git a/build.gradle b/build.gradle index c66a283..9078bc1 100755 --- a/build.gradle +++ b/build.gradle @@ -1,3 +1,6 @@ +plugins { + id 'java' +} ext { baseDir = project.projectDir } @@ -32,3 +35,5 @@ subprojects { task wrapper(type: Wrapper) { gradleVersion = '2.10' } + +ant.importBuild 'third-party.xml' diff --git a/build.properties b/build.properties index b83ee35..b85fd64 100644 --- a/build.properties +++ b/build.properties @@ -5,15 +5,3 @@ strongback.version=2017.2.0 # replace the value with the URL of the WPILib Eclipse Update Site # wpilib.updatesite.url=http://first.wpi.edu/FRC/roborio/release/eclipse/ - -# -# Starting in 2017, WPILib will no longer have built-in support for the TalonSRX -# from Cross the Road Electronics (CTRE). Instead, the `CANTalon` class and associated -# functionality is available directly from CTRE as a separate JAR. -# -ctre.download.url=http://www.ctr-electronics.com/downloads/lib/CTRE_FRCLibs_NON-WINDOWS.zip - -# -# The navX-MXP library is available in a ZIP file that has only the Java and C++ libraries. -# -navx.download.url=http://www.kauailabs.com/public_files/navx-mxp/navx-mxp-libs.zip \ No newline at end of file diff --git a/build.xml b/build.xml index c7a1ac0..a67adf4 100644 --- a/build.xml +++ b/build.xml @@ -13,12 +13,12 @@ + + - - @@ -256,62 +256,4 @@ - - - - - - - - - - - Downloading the CTRE library and installing into '${ctre.dir}'. - - - - - - - - - - - - - - - - - - # Downloaded and installed by Strongback build system${line.separator} - ${ctre.version.properties} - - - - - - - - - - - - Downloading the navX-MXP library and installing into '${navx.dir}'. - - - - - - - - - - - - - - - - diff --git a/strongback/build.gradle b/strongback/build.gradle index 950f81c..2b7b838 100644 --- a/strongback/build.gradle +++ b/strongback/build.gradle @@ -10,7 +10,10 @@ wpi { dependencies { compile wpilib() compile fileTree(dir: "${project.baseDir}/libs/ctre", include: '**/*.jar') - compile fileTree(dir: "${project.baseDir}/libs/nvax-mxp", include: '**/*.jar') + compile fileTree(dir: "${project.baseDir}/libs/navx-mxp", include: '**/*.jar') compile('io.dropwizard.metrics:metrics-core:3.1.0') compile('junit:junit:4.11') } + +compileJava.dependsOn(':download-navx') +compileJava.dependsOn(':download-ctre') \ No newline at end of file diff --git a/third-party.xml b/third-party.xml new file mode 100644 index 0000000..f61abad --- /dev/null +++ b/third-party.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + Downloading the CTRE library and installing into '${ctre.dir}'. + + + + + + + + + + + + + + + + + + # Downloaded and installed by Strongback build system${line.separator} + ${ctre.version.properties} + + + + + + + + + + + Downloading the navX-MXP library and installing into '${navx.dir}'. + + + + + + + + + + + + + + + + + diff --git a/thirdparty.properties b/thirdparty.properties new file mode 100644 index 0000000..864fad5 --- /dev/null +++ b/thirdparty.properties @@ -0,0 +1,11 @@ +# +# Starting in 2017, WPILib will no longer have built-in support for the TalonSRX +# from Cross the Road Electronics (CTRE). Instead, the `CANTalon` class and associated +# functionality is available directly from CTRE as a separate JAR. +# +ctre.download.url=http://www.ctr-electronics.com/downloads/lib/CTRE_FRCLibs_NON-WINDOWS.zip + +# +# The navX-MXP library is available in a ZIP file that has only the Java and C++ libraries. +# +navx.download.url=http://www.kauailabs.com/public_files/navx-mxp/navx-mxp-libs.zip \ No newline at end of file From 4af573a83760516611e400d7f716a7e5ec5930fd Mon Sep 17 00:00:00 2001 From: c5403 Date: Mon, 1 May 2017 22:35:51 -0500 Subject: [PATCH 8/8] Fixing spacing issues --- build-common.xml | 2 +- build.gradle | 40 ++++++++++++++++++++-------------------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/build-common.xml b/build-common.xml index bb1ad09..d1caa50 100644 --- a/build-common.xml +++ b/build-common.xml @@ -65,7 +65,7 @@ - + Compiling against WPILib ${wpilib.version} installed at ${wpilib.dir} diff --git a/build.gradle b/build.gradle index 9078bc1..9ab73a1 100755 --- a/build.gradle +++ b/build.gradle @@ -1,39 +1,39 @@ plugins { - id 'java' + id 'java' } ext { - baseDir = project.projectDir + baseDir = project.projectDir } subprojects { - apply plugin: 'java' + apply plugin: 'java' - sourceCompatibility = 1.8 - targetCompatibility = 1.8 + sourceCompatibility = 1.8 + targetCompatibility = 1.8 - repositories { - mavenCentral() - } + repositories { + mavenCentral() + } - group = "org.strongback" - version = "2017.2.1-SNAPSHOT" + group = "org.strongback" + version = "2017.2.1-SNAPSHOT" - repositories { - maven { - url 'http://first.wpi.edu/FRC/roborio/maven/release' - } - } + repositories { + maven { + url 'http://first.wpi.edu/FRC/roborio/maven/release' + } + } - dependencies { - testCompile('junit:junit:4.12') - testCompile('org.easytesting:fest-assert:1.4') - } + dependencies { + testCompile('junit:junit:4.12') + testCompile('org.easytesting:fest-assert:1.4') + } } task wrapper(type: Wrapper) { - gradleVersion = '2.10' + gradleVersion = '2.10' } ant.importBuild 'third-party.xml'