-
-
Notifications
You must be signed in to change notification settings - Fork 303
Changes in 6.0.0
BJ Hargrave edited this page Sep 7, 2021
·
37 revisions
- Bndtools is built to run on Eclipse 2020-06 (4.16) or later. This was changed from Eclipse 2018-12 (4.10) in the last release. So Bndtools 6.0 may not run on older versions of Eclipse.
- Bndtools m2e is built to run on Eclipse m2e 1.16.0 or later. This was changed from Eclipse m2e 1.10.0 in the last release. So Bndtools m2e 6.0 may not run on older versions of Eclipse m2e.
- A build loop was fixed where Bndtools m2e could loop rebuilding the jar.
- Property naming prefix in
cnf/ext/*.bnd
changes - If an property name is already declared elsewhere, the file name will now be used as a namespace. In previous versions it has been used as a prefix. Before-plugin
incnf/ext/test.bnd
becametest.-plugin
, now it will be-plugin.test
. - A number of previously deprecated types and members have been removed. So code using these will need updates.
-
Selectors in instructions now support the
o
optional flag. If the selector ends with:o
, then the selector is marked optional. This means that when Bnd might warn about unused selectors, it will not warn that an optional selector is unused. - The
-runjdb
instruction is updated to support ahost:port
value for the-agentlib:jdwp=transport=dt_socket
address
option. - The
githead
macro has been updated to understand git worktrees. - Added support for the new features in the forthcoming OSGi Declarative Services 1.5 specification from the OSGi Working Group at Eclipse.
- Baselining fixes were added so that CLASS retention annotation changes are MICRO bumps, inserted super classes and super interfaces are now properly handled, and
BaselineIgnore
is now supported onpackage-info
. - BndPomRepository - By setting
dependencyManagement=true
, the repository now considers thedependencyManagement
of a pom as well.
- TBD
- TBD
- The Bnd Maven plugins now require a minimum of Maven 3.3.9. This was changed from Maven 3.1.1 in the last release.
- The Bnd Maven plugin can be configured to skip the processing of missing or empty output directories. Use the configuration properties
skipIfEmpty
to enable this mode. This helps configure thebnd-maven-plugin
in a parent pom without requiring all projects to emit bundles and works in conjunction with themaven-jar-plugin
's property of the same name (skipIfEmpty
). It also enables projects to produce test artifacts without requiring a main sources or artifact.
- The Bnd Gradle plugins and tasks now support Gradle 7.
- The Bnd Gradle plugins and tasks underwent a large update to modernize their implementations and prepare for Gradle 7 and newer Gradle idioms. The implementation classes have all been rewritten in Java. All Bnd Gradle task properties are now Gradle Properties and should generally be set using an assignment in your build script. This also means the Gradle Properties are typed and expect the correct value when being set. So, using the
Export
task as an example, set thebndrun
property withbndrun = file('mybndrun.bndrun')
rather thanbndrun 'mybndrun.bndrun'
. With the change to use Gradle Properties, the latter example is no longer possible as Gradle expects thebndrun(String)
method which does not exist. So you may need to update your build scripts to use assignment of the proper argument type for setting task properties. - Added
outputBndrun
property to theResolve
task type. This allows the resolve operation to write the resolution to an output bndrun file which can then be used as input to another task such as aTestOSGi
task. Because the Bnd Gradle tasks use Gradle Properties, the connection of theoutputBndrun
output property of aResolve
task to thebndrun
input property of aTestOSGi
task, for examplebndrun = resolveTask.flatMap { it.outputBndrun }
, enables Gradle to know that theResolve
task must be executed before theTestOSGi
task. - A number of previously deprecated task properties and task property setters/getters have been removed.
-
Baseline.destination
is replaced byBaseline.reportFile
. -
Bndrun.workingDir
is replaced byBndrun.workingDirectory
. -
Export.destinationDir
is replaced byExport.destinationDirectory
. -
Index.destinationDir
is replaced byIndex.destinationDirectory
. -
TestOSGi.resultsDir
is replaced byTestOSGi.resultsDirectory
.
-
-
Gradle is deprecating the convention concept and build scripts need to move to use the replacement extensions before Gradle 8.
-
BndPluginExtension
replaces the now deprecatedBndPluginConvention
.- The
bnd()
,bndis()
,bndMerge()
,bndProcess()
, andbndUnprocessed()
methods inBndPluginConvention
should no longer be used and build scripts should be updated to use the equivalent methods,get()
,is()
,merge()
,process()
, andunprocessed()
, in thebnd
extension. For examplebnd.get('property')
replacesbnd('property')
. -
BndPluginConvention
will be removed in a future version of the Bnd Gradle plugins.
- The
-
BundleTaskExtention
replaces the now deprecatedBundleTaskConvention
.- The properties of the convention should no longer be used and build scripts should be updated to use the equivalent properties in the
bundle
extension. For example,bundle { bndfile = file('bnd.bnd') }
replacesbndfile = file('bnd.bnd')
. - Kotlin DSL support is provided for the
BundleTaskExtention
in theBundle
task as well as thejar
task when thebiz.aQute.bnd.builder
plugin is applied. -
BundleTaskConvention
will be removed in a future version of the Bnd Gradle plugins.
- The properties of the convention should no longer be used and build scripts should be updated to use the equivalent properties in the
-
- The tasks using
bndrun
files can now infer values for-runee
and-runrequires
when they are not specified. The-runee
value is based upon the target Java version of thecompileJava
task and the-runrequires
value is based upon the Bundle-SymbolicName values of the artifacts in thearchives
configuration which is generally the artifact(s) built by thejar
task. This is similar to the behavior of the Bnd Maven plugins. - The
Bndrun
andTestOSGi
task types now have ajavaLauncher
property, like theTest
task type, which can be used to specify the java executable to be used for the task. - The Bnd Gradle plugins require a minimum of Gradle 6.7 for Java 8 to Java 15, and Gradle 7.0 for Java 16.
- Bndtools is built to run on Eclipse 2020-06 (4.16) or later. So Bndtools 6.0 may not run on older versions of Eclipse.
- Bndtools m2e is built to run on Eclipse m2e 1.16.0 or later. So Bndtools m2e 6.0 may not run on older versions of Eclipse m2e.
- The Bnd Maven plugins require a minimum of Maven 3.3.9.
- The Bnd Gradle plugins require a minimum of Gradle 6.7 for Java 8 to Java 15, and Gradle 7.0 for Java 16.
- The Bnd Gradle plugins and tasks underwent a large update to modernize their implementations and prepare for Gradle 7 and newer Gradle idioms. All Bnd Gradle task properties are now Gradle Properties and should generally be set using an assignment in your build script. A number of previously deprecated task properties have been removed. The conventions are now deprecated and replaced by extensions. See above for more details.
-
Windows 10 users: Windows 10 Defender significantly slows down Eclipse, reason being Windows 10 Defender scanning the JAR files. The problem has been reported to Microsoft here. Until then, a workaround to this problem is to add Eclipse root directory to Windows 10 Defender’s exclusion list, detailed steps are shared here.
Note: This is not just an Eclipse issue on Windows 10.
See also Bnd Tips for Windows users.