Some more investigations on that:

The BREE header is deprecated since OSGi 4.3 
(https://www.infoq.com/news/2011/03/osgi-43). I don't think we should generate 
it any longer. Instead we should only rely on the Require-Capability which is 
being generated by bnd automatically based on the class version (compare with 
http://bnd.bndtools.org/instructions/noee.html and 
https://github.com/bndtools/bnd/blob/41056e2507e9781d17aeaf66a00b35370a63043d/biz.aQute.bndlib/src/aQute/bnd/osgi/Analyzer.java#L772)

Regarding the animal-sniffer-plugin:
1) There is not yet a Java 9 signature (i.e. requiring java9 for Sling Modules 
does not work yet)
2) Javac 9 comes with bootclasspaths for Java 6, Java 7 and Java 8 (see 
https://stackoverflow.com/a/43103038/5155923 and 
http://openjdk.java.net/jeps/247) which makes using animal-sniffer-plugin 
obsolete with JDK9.

I would therefore recommend to configure javac via the "release" parameter 
(supported since m-c-p 3.6.0, see 
https://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#release).
 Maybe we should do that in a profile only activated for Java9 and above.
The animal-sniffer-plugin should only be used for Java < 9. 

I think with those conclusions we can again get rid of your custom plugin and 
only use the buildhelper-plugin to determine the right animal sniffer signature 
version when running in Java < 9.
WDYT?

> On 4. Sep 2017, at 14:01, Robert Munteanu <romb...@apache.org> wrote:
> 
> On Mon, 2017-09-04 at 13:06 +0200, Konrad Windszus wrote:
>>> Am 04.09.2017 um 11:30 schrieb Robert Munteanu <romb...@apache.org>
>>> :
>>> 
>>>> On Mon, 2017-09-04 at 08:55 +0200, Konrad Windszus wrote:
>>>> If I understand correctly we only need to extract the relevant
>>>> version from the sling java property and use that then in the
>>>> configuration of other plugins (like animal sniffer or m-c-p).
>>>> That
>>>> is totally possible with the mentioned buildhelper plugin. 
>>> 
>>> Agreed.
>>> 
>>>> There is no need for a dedicated plugin. The BREE header is
>>>> mostly
>>>> static and must be set in the m-b-p configuration. The dynamic
>>>> part
>>>> can also be retrieved via the buildhelper plugin. I hope this
>>>> makes
>>>> things clearer.
>>> 
>>> The BREE header is set following the sling.java.version property.
>>> Yes,
>>> it is mostly static but does not directly follow the Java version (
>>> see
>>> [1] for more details). Here is a mapping of sling.java.version to
>>> BREE
>>> headers:
>>> 
>>> 5  - J2SE-1.5
>>> 6  - JavaSE-1.6
>>> 7  - JavaSE-1.7
>>> 8  - JavaSE-1.8
>>> 9  - JavaSE-9
>>> 
>>> This is something that we mapped with the antrun plugin stuff. Now
>>> I
>>> propose switching to a custom plugin due to Java 9 issues.
>>> 
>>> I still don't see how the BREE header can be configured using the
>>> buildhelper plugin. Can you add a small config snippet or link to
>>> an
>>> example?
>>> 
>> 
>> Supporting Java5 is probably not necessary and even for Java 9
>> JavaSE-1.9 seems valid. 
> 
> Seems, but it is not :-)
> 
> I started the Sling launchpad with Java 9 and the system bundle
> provides the following capabilities:
> 
> osgi.ee; osgi.ee="OSGi/Minimum"; version:List="1.0, 1.1, 1.2", osgi.ee;
> osgi.ee="JavaSE"; version:List="1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7,
> 1.8, 9", 
> osgi.ee; osgi.ee="JavaSE/compact1"; version:List="1.8, 9",
> osgi.ee; osgi.ee="JavaSE/compact2"; version:List="1.8, 9",
> osgi.ee; osgi.ee="JavaSE/compact3"; version:List="1.8, 9"
> 
> Note the 9 everywhere, following the version change in Java:
> 
> $ /opt/jdk-9/bin/java -version
> java version "9"
> (snip)
> 
>> I think you can generate the header then with the following bnd
>> instruction: http://bnd.bndtools.org/instructions/runee.html
> 
> The way I read it, this instruction parses a string argument into an EE
> enum. That does not help us as we are using a 'plain' java version
> string, not a legal execution environment value.
> 
> -----
> 
> I understand the desire to not reinvent the wheel, especially with
> infrastructure code. However, releasing this plugin unblocks us with
> testing for Java 9, which has further issues once we run the ITs.
> 
> Releasing a version of this plugin does not mean we'll never revisit
> the solution. If there is something better, I'm happy to remove the
> plugin from our parent pom. But given that the code is there, it's
> small and self-contained I'm inclined just to use it for now, and when
> we have a better solution retire it.
> 
> Thanks,
> 
> Robert
> 
>> 
>>> Thanks,
>>> 
>>> Robert
>>> 
>>> 
>>> [1]: https://www.osgi.org/developer/specifications/reference/
>>>> 
>>>> Von meinem iPhone gesendet
>>>> 
>>>>> Am 03.09.2017 um 23:01 schrieb Robert Munteanu <rombert@apache.
>>>>> org>
>>>>> :
>>>>> 
>>>>> Hi Konrad,
>>>>> 
>>>>>> On Sat, 2017-09-02 at 10:38 +0200, Konrad Windszus wrote:
>>>>>> Sorry for answering late, but wouldn't the buildhelper plugin
>>>>>> with
>>>>>> its parse-version fulfill our needs: http://www.mojohaus.org/
>>>>>> buil
>>>>>> d-he
>>>>>> lper-maven-plugin/parse-version-mojo.html
>>>>>> 
>>>>>> That should be able to generate all version strings in the
>>>>>> required
>>>>>> formats from one source property.
>>>>> 
>>>>> The functionality is not about setting the project's version,
>>>>> but
>>>>> about
>>>>> generating the 'minimum supported java' version for various
>>>>> plugins.
>>>>> For javac and animal-sniffer it's usually the Java version
>>>>> number.
>>>>> For
>>>>> the maven-bundle-plugin it's the Bundle-
>>>>> RequiredExecutionEnvironment
>>>>> header.
>>>>> 
>>>>> I don't see how the build helper plugin can generate the
>>>>> Bundle-
>>>>> RequiredExecutionEnvironment header. Is there such an option?
>>>>> 
>>>>> Thanks,
>>>>> 
>>>>> Robert
>>>>> 
>>>>>> 
>>>>>> Von meinem iPhone gesendet
>>>>>> 
>>>>>>> Am 01.09.2017 um 10:10 schrieb Karl Pauls <karlpauls@gmail.
>>>>>>> com>
>>>>>>> :
>>>>>>> 
>>>>>>> +1
>>>>>>> 
>>>>>>> regards,
>>>>>>> 
>>>>>>> Karl
>>>>>>> 
>>>>>>>> On Fri, Sep 1, 2017 at 8:35 AM, Carsten Ziegeler <cziegel
>>>>>>>> er@a
>>>>>>>> pach
>>>>>>>> e.org> wrote:
>>>>>>>> Sounds good to me, thanks Robert
>>>>>>>> 
>>>>>>>> Carsten
>>>>>>>> 
>>>>>>>> Robert Munteanu wrote
>>>>>>>>> Hi,
>>>>>>>>> 
>>>>>>>>> As you might know, running the Sling ITs with Java 9 is
>>>>>>>>> blocked
>>>>>>>>> by an
>>>>>>>>> incompatibility of the maven-antrun-plugin with Java 9
>>>>>>>>> ([1],
>>>>>>>>> [2]).
>>>>>>>>> 
>>>>>>>>> It seems that a solution is not yet agreed on and I'd
>>>>>>>>> like
>>>>>>>>> to
>>>>>>>>> start
>>>>>>>>> running the ITs on Java 9 sooner rather than later.
>>>>>>>>> 
>>>>>>>>> To that end, I've written a tiny Maven plugin which
>>>>>>>>> does
>>>>>>>>> exactly what
>>>>>>>>> the maven-antrun-plugin snippet did [3]. TBH, I never
>>>>>>>>> really
>>>>>>>>> liked
>>>>>>>>> scripting in the pom but that's another issue :-)
>>>>>>>>> 
>>>>>>>>> Anyway, my proposal is to drop the maven-antrun-plugin
>>>>>>>>> _only_
>>>>>>>>> for
>>>>>>>>> setting the project properties in the parent pom.
>>>>>>>>> Bertrand
>>>>>>>>> rightly
>>>>>>>>> mentioned that we have other usages all over Sling, but
>>>>>>>>> those
>>>>>>>>> do not
>>>>>>>>> affect running the ITs and I won't touch them.
>>>>>>>>> 
>>>>>>>>> Thoughts?
>>>>>>>>> 
>>>>>>>>> Robert
>>>>>>>>> 
>>>>>>>>> [1]: https://issues.apache.org/jira/browse/SLING-7072
>>>>>>>>> [2]: https://issues.apache.org/jira/browse/MNG-6275
>>>>>>>>> [3]: http://svn.apache.org/viewvc?rev=1806875&view=rev
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> --
>>>>>>>> Carsten Ziegeler
>>>>>>>> Adobe Research Switzerland
>>>>>>>> cziege...@apache.org
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> -- 
>>>>>>> Karl Pauls
>>>>>>> karlpa...@gmail.com

Reply via email to