Releases: graalvm/native-build-tools
0.9.11
What's Changed
Read what's new in the documentation.
- Add issue templates by @lazar-mitrovic in #216
- Fix @arg file not being used for tests in Maven by @melix in #212
- Make it possible to use environment variables in native tests by @melix in #217
- Fix incorrect declaration of output directory by @melix in #219
- Refactor build by @melix in #220
- Integrate native configuration repository with Gradle by @melix in #204
- Rework argfile generation by @melix in #223
- Rename
metadataRepository
and document feature by @melix in #225 - Support applications with custom packaging types by @alvarosanchez in #226
New Contributors
- @alvarosanchez made their first contribution in #226
Full Changelog: 0.9.10...0.9.11
0.9.10
What's Changed
Read what's new in the documentation.
- Introduce skipNativeTests flag in Maven plugin by @sbrannen in #193
- Fix system property breaking build cacheability by @melix in #192
- Make sure executable ends with
.exe
under Windows by @melix in #199 - Make it possible to override the classpath by @melix in #200
- Upgrade to Gradle 7.4 by @melix in #202
- Fix race condition if tests are executed in parallel by @melix in #195
- Add support for
@arg
file by @melix in #205
Full Changelog: 0.9.9...0.9.10
0.9.9
Release highlights
This release contains several fixes for the Gradle plugin.
- Do not fail if a classpath entry is missing by @melix in #177
- Fix resource inference not working on custom binaries by @melix in #182
- Rework how disabling of toolchain detection works by @melix in #184
Full Changelog: 0.9.8...0.9.9
0.9.8
Release highlights
This release contains various bugfixes and improvements for both the Maven and Gradle plugins.
Gradle plugin
- [Breaking change] The
agent
option has been replaced with anagent { ... }
configuration block which includes anenabled
property. - Toolchain support can now be disabled altogether, which can be useful when using GraalVM Enterprise Edition.
- See Disabling toolchain detection for details.
- Fixed a bug when using a fat jar which assumed that all entries to be repackaged were jars.
- Agent options are now configurable.
- Note that the
experimental-class-loader-support
agent option is no longer added by default. - See Configuring agent options for details.
- Note that the
- Added an option to perform resource detection in classpath entries which contain a
native-image/resource-config.json
file.
Maven plugin
- The agent can now be enabled in the POM.
- See Enabling the agent for details.
- Agent options are now configurable.
- Note that the
experimental-class-loader-support
agent option is no longer added by default. - See Configuring agent options for details.
- Note that the
- Added an option to perform resource detection in classpath entries which contain a
native-image/resource-config.json
file.
JUnit Platform Native
- Builds now correctly fail if a container-level extension or lifecycle method fails --
for example, if an@BeforeAll
method in a JUnit Jupiter test class throws an exception. - Builds no longer fail when tests are aborted -- for example, via a failed assumption.
- Improved documentation for JUnit Platform and Maven Surefire support in the plugins.
Detailed changes
Please refer to this milestone.
0.9.7.1
Release highlights
This release is a bugfix release for Maven users. If you were using the plugin on a multi-project build or a build which uses a parent POM we recommend to upgrade.
[Maven] Fix test execution when plugin is declared in a parent POM
The plugin will now work properly if declared in a parent pom.xml
.
See #146
0.9.6
Release highlights
This release is another important step towards a stable version. The most important change in this release is the integration with JUnit 5.8 which brings a number of improvements, which is a breaking change for Maven users. Apart from this, for Maven, the biggest change is the ability to run with the native GraalVM agent (to generate reflection files). Gradle users now have the ability to configure multiple test suites.
See below for more details on the changes.
[Gradle and Maven] Upgrade to JUnit 5.8
The plugins now depend on JUnit 5.8 which provides an official test listener which is used by these plugins.
As a consequence, Maven users will have to configure their builds to enable the plugin extensions:
<plugin>
<groupId>org.graalvm.buildtools</groupId>
<artifactId>native-maven-plugin</artifactId>
<version>${native.maven.plugin.version}</version>
<extensions>true</extensions>
...
</plugin>
The dependency on junit-platform-native
which used to be required pre-0.9.6 can now safely be removed.
For Gradle users, there's no impact on the configuration, however a good consequence is that the junit-native-platform
dependency no longer leaks into your application's classpath.
[Maven] Agent support for Maven plugin
The Maven plugin now supports the GraalVM agent to generate configuration files.
Please refer to the Maven Plugin documentation for details.
[Gradle] Disabling testing support
The Gradle plugin now provides an option to disable testing support.
This can be useful if the test framework you are using doesn't work with this plugin or that you simply don't want to execute tests natively.
To disable tests, use the graalvmNative
configuration block:
graalvmNative {
testSupport.set(false)
}
[Gradle] Configuring additional test images
The Gradle plugin now supports building multiple test images, which can be used to execute tests natively for more kinds of tests: integration tests, functional tests, ...
For more information, please refer to the Gradle plugin documentation
0.9.5
Release highlights
This release is a major milestone towards 1.0 as it revamps the Gradle DSL and performs some renaming aimed at reducing confusion.
This preparation work is also needed to support more features in the future, in particular multiple test images, and to make it easier for other Gradle plugins to integrate with this plugin.
There are no changes to the Maven plugin in this release.
Full documentation for this version: https://graalvm.github.io/native-build-tools/0.9.5/index.html
Changes in the Gradle plugin DSL are the following:
- The
nativeBuild
andnativeTest
extensions are now deprecated. A top-level container for configuring native images has been introduced. Instead of:
nativeBuild {
verbose = true
}
you need to use:
graalvmNative {
binaries {
main {
verbose = true
}
}
}
and instead of:
nativeTest {
buildArgs("...")
}
you need to use:
graalvmNative {
binaries {
test {
buildArgs("...")
}
}
}
- The
nativeBuild
task has been renamed tonativeCompile
. - The
nativeTestBuild
task has been renamed tonativeTestCompile
.
Both nativeBuild
and nativeTestBuild
task invocations are still supported but deprecated and will be removed in a future release.
0.9.4
This release works around a limitation for Windows users who encounter an issue with long classpath entries on CLI: the Gradle plugin will now automatically handle this problem by creating a fat jar instead of passing all entries on classpath (this behavior can be disabled if needed).
Maven users will have to configure their build differently to use shading.
In addition to this, we're now publishing development snapshots of this plugin. For Gradle, you will need to declare this repository in your settings.gradle(.kts) file:
pluginManagement {
plugins {
id 'org.graalvm.buildtools.native' version '0.9.5-SNAPSHOT'
}
repositories {
maven {
url "https://raw.githubusercontent.com/graalvm/native-build-tools/snapshots"
}
gradlePluginPortal()
}
}
For Maven, you need to use this repository configuration:
<pluginRepositories>
<pluginRepository>
<id>graalvm-native-build-tools-snapshots</id>
<name>GraalVM native-build-tools Snapshots</name>
<url>https://raw.githubusercontent.com/graalvm/native-build-tools/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
Related PRs: #126
All artifacts are available on the Maven Central.
Documentation is available at graalvm.github.io/native-build-tools/0.9.4
0.9.3
This release contains:
- Fix for
mainClass
not being optional (Gradle plugin) - Fix for Gradle < 7 failing to determine GraalVM toolchain
- Gradle plugin now registers proper groups
- Automatic
native-image
tool fetching viagu
(Gradle plugin) - FIxed issue where
nativeTest
would fail when tests are annotated withTimeout
- Added a
sharedLibrary
configuration option for Gradle plugin - Removed broken
server
configuration option from Gradle plugin - Added a documentation website with proper CI integration
In addition to those improvements, several behind-the-scenes changes were made:
- Introduced "Dockerless" Maven plugin functional testing
- Parallelized Gradle testing in CI
- Replaced
groovy-json
withjackson-databind
for JSON handling - Fixed Github Actions syntax to enable manual workflow invoking
Note that there has been a breaking change in the Gradle plugin - server
configuration option was removed.
Using said option will cause existing builds to break, so users are advised to remove it from their configuration prior to upgrading.
Related PRs: #103, #104, #107, #113, #114, #115, #116, #117, #118, #120, #121, #123, #125
All artifacts are available on the Maven Central.
Documentation is available at graalvm.github.io/native-build-tools/0.9.3
0.9.2
This release contains:
- Revamped Gradle plugin that is now a lot more idiomatic.
- Fixes for several issues regarding JUnit testing.
- Removal of Test Discovery mode from the Maven plugin.
- Fix for Maven creating empty test images when no tests are present.
- Added support for Kotlin tests in Gradle.
In addition to those improvements, several behind-the-scenes changes were made in order to ensure better compatibility moving forward:
- Test coverage has been greatly improved for all subprojects.
- Build tooling for this repository has been improved significantly.
Note that there has been a breaking change in the Gradle plugin - persistConfig
configuration option was removed.
Using said option will cause existing builds to break, so users are advised to remove it from their configuration prior to upgrading.
System property -DpersistConfig
will have no effect going forward.
Related PRs: #71, #78, #87, #89, #91, #94, #95, #96
All artifacts are available on the Maven Central.