Ok guys … now some MAJOR update :-)
I managed to setup a build that build all modules with Java8, if the profile
“platform-java7” is enabled, also Java7 versions are produced by unpacking the
Java8 versions in some pom-only modules, applying retrolambda there and then
running all unit- and integration-tests with Java7. The cool thing is, I didn’t
port only the ones build for java7 in the past, but all edgent modules and
fixed the ones that were having problems (I added a helper that does the same
as the Java8 extensions did). Now all modules except some examples are also
available on Java7 (I had do disable some Tests though, as they were using
Java8 APIs, but this should be fixable quite easily). The cool thing … all
should also work on Travis too (I found a place where the Java paths were
documented … see the .travis.yml).
The build of Java8 should work out of the box on any machine with Maven and
Java8, if you want to build the Java7 versions, you need to activate the
profile “platform-java7” and provide a so-called toolchain (either you create a
toolchain.xml in your .m2 directory or you create a file elsewhere and pass
that files path in with the “-t” command-line option). As retrolambda needs
Java8 to run, you also need to provide a property: “java8.home” that points to
your Java8 home directory.
Regarding the Android package, I would start working on this next. If the
“android” modules are only used in the “android” platform, I would suggest
building a similar structure for android as for Java7 and to move the real
android modules into that directory. Then they wouldn’t be part of the Java8
and Java7 package and be included only in the android package.
You can use the toolchains-travis.xml file as a template to create your own. I
added an git exclusion for toolchains-local.xml. So, if you just copy that to
toolchains-local.xml and adjust your java-home paths inside, you should be able
to build everything with the following command:
mvn –Pplatform-java7,platform-android –Djava8.home={JAVA8_HOME} –t
toolchains-local.xml clean install
Hope it works on your machines too … if not I’ll handle the problems as soon as
possible.
Chris
Am 19.06.17, 15:20 schrieb "Dale LaBossiere" <[email protected]>:
Nice catch!
I created https://issues.apache.org/jira/browse/EDGENT-423
— Dale
> On Jun 18, 2017, at 8:04 AM, Christofer Dutz <[email protected]>
wrote:
>
> While fine tuning my maven migration, I stumbled over a problem in the
analytics/sensors modules.
> As part of the build I am validating the classes for Java7 against the
signatures of the Java 7 SDK. Here my plugin found an issue I thought was worth
reporting.
> In the class org.apache.edgent.analytics.sensors.Range almost at the end
in the method toUnsignedString we are using Byte.toUnsignedInt, which is only
available in Java 8 … there is no back-port for java 7 for this code.
Eventually we should replace this with code that works on Java 7 too.