Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 0 additions & 50 deletions .github/workflows/localversion.yaml

This file was deleted.

11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,17 @@

All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.

## [0.1.3](https://github.com/eclipse-velocitas/vehicle-app-java-sdk/compare/release/v0.1.2...release/v0.1.3) (2026-09-07)

### Improvements

* Dependency Updates to latest version
* Minimum JDK increased 17 Support

### Bug Fixes

* Support for VSS Spec 6.0

## [0.1.2](https://github.com/eclipse-velocitas/vehicle-app-java-sdk/compare/release/v0.1.1...release/v0.1.2) (2025-03-04)


Expand Down
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ Vehicle App Java SDK

This project is in incubation status. Not all required functionality might be migrated yet.

> [!IMPORTANT]
> **AI Usage Notice**
>
> This repository partially contains AI-generated code using GitHub Copilot Business.
> This notice must remain attached to any reproduction of this repository.

## Overview

The Velocitas Vehicle App Java SDK provides functionality to ease the implementation of Automotive
Expand Down
70 changes: 64 additions & 6 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -94,22 +94,22 @@ tasks.withType<Detekt>().configureEach {
include("**/*.kt", "**/*.kts")
exclude("**/resources/**", "**/build/**", "**/node_modules/**", "**/cache/**")

jvmTarget = "1.8"
jvmTarget = "17"
}

tasks.withType<DetektCreateBaselineTask>().configureEach {
jvmTarget = "1.8"
jvmTarget = "17"

setSource(projectDir)
include("**/*.kt", "**/*.kts")
exclude("**/resources/**", "**/build/**", "**/node_modules/**", "**/cache/**")
}

tasks.withType<Detekt>().configureEach {
jvmTarget = "1.8"
jvmTarget = "17"
}
tasks.withType<DetektCreateBaselineTask>().configureEach {
jvmTarget = "1.8"
jvmTarget = "17"
}

subprojects {
Expand All @@ -121,12 +121,14 @@ subprojects {
}

// see: https://kotest.io/docs/framework/tags.html#gradle
tasks.withType<Test> {
tasks.withType<Test>().configureEach {
val systemPropertiesMap = HashMap<String, Any>()
System.getProperties().forEach { key, value ->
System.getProperties().forEach { (key, value) ->
systemPropertiesMap[key.toString()] = value.toString()
}
systemProperties = systemPropertiesMap

failOnNoDiscoveredTests = false
}

// https://docs.gradle.org/current/userguide/dependency_locking.html
Expand All @@ -138,6 +140,7 @@ subprojects {

@OptIn(ExperimentalPathApi::class)
tasks.register("mergeDashFiles") {
description = "Merges Dash Files"
group = "oss"

dependsOn(
Expand Down Expand Up @@ -177,3 +180,58 @@ tasks.register("mergeDashFiles") {
}
}
}

// Resolve and lock all configurations of all submodules.
// Each subproject resolves its own configurations to avoid cross-project locking violations
// when Gradle parallel execution is enabled (org.gradle.parallel=true).
// https://docs.gradle.org/current/userguide/dependency_locking.html
val resolveAndLockAllSubprojects = subprojects.map { subproject ->
subproject.tasks.register("resolveAndLockAll") {
group = "dependency locking"
description =
"Resolves and locks all configurations of ${subproject.name}. Must be run with the --write-locks flag."

notCompatibleWithConfigurationCache("Filters configurations at execution time")
doFirst {
require(gradle.startParameter.isWriteDependencyLocks) {
"$path must be run from the command line with the `--write-locks` flag"
}
}
doLast {
subproject.configurations
.filter { it.isCanBeResolved }
.forEach { config ->
try {
config.resolve()
} catch (e: ResolveException) {
logger.info("Skipping resolution for configuration '${config.name}': ${e.message}")
}
}
}
}
}

tasks.register("resolveAndLockAll") {
group = "dependency locking"
description = "Resolves and locks all configurations of all submodules. Must be run with the --write-locks flag."

notCompatibleWithConfigurationCache("Filters configurations at execution time")
doFirst {
require(gradle.startParameter.isWriteDependencyLocks) {
"$path must be run from the command line with the `--write-locks` flag"
}
}
// Also resolve root project configurations
doLast {
configurations
.filter { it.isCanBeResolved }
.forEach { config ->
try {
config.resolve()
} catch (e: ResolveException) {
logger.info("Skipping resolution for configuration '${config.name}': ${e.message}")
}
}
}
dependsOn(resolveAndLockAllSubprojects)
}
6 changes: 3 additions & 3 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@ plugins {
}

java {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}

kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_11)
jvmTarget.set(JvmTarget.JVM_17)
}
}
4 changes: 2 additions & 2 deletions buildSrc/src/main/kotlin/ktlint.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
*
*/

val ktlint by configurations.creating
val ktlint = configurations.create("ktlint")

dependencies {
ktlint("com.pinterest:ktlint:0.49.0") {
Expand All @@ -27,7 +27,7 @@ dependencies {
}
}

val ktlintCheck by tasks.registering(JavaExec::class) {
val ktlintCheck = tasks.register<JavaExec>("ktlintCheck") {
group = LifecycleBasePlugin.VERIFICATION_GROUP
description = "Check Kotlin code style"
classpath = ktlint
Expand Down
35 changes: 26 additions & 9 deletions buildscripts/dash.sh
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#!/usr/bin/env bash
#
# Copyright (c) 2023 Contributors to the Eclipse Foundation
#
Expand All @@ -17,9 +18,17 @@
#
#

projectName=$1
folder=build/oss/"$projectName"
fileName=dependencies.txt
set -euo pipefail

projectPath=$1
# Normalize project path for gradle (ensure it starts with :)
gradleProjectPath=":${projectPath#:}"

# Normalize folder path (strip leading colon and replace colons with slashes)
folderPath="${projectPath#:}"
folderPath="${folderPath//://}"
folder="build/oss/$folderPath"
fileName="dependencies.txt"

mkdir -p "$folder"

Expand All @@ -42,16 +51,24 @@ mkdir -p "$folder"
unameOut="$(uname -s)"
case "${unameOut}" in
Linux*) GREP="grep";; # Linux
Darwin*) GREP="ggrep";; # Mac
Darwin*)
if command -v ggrep > /dev/null 2>&1; then
GREP="ggrep"
else
GREP="grep"
fi
;;
*) GREP="UNKNOWN:${unameOut}"
esac
echo "${GREP}"

./gradlew "$projectName":dependencies \
| ${GREP} -Poh "(?<=\-\-\- ).*" \
| ${GREP} -Pv "\([nc\*]\)" \
| ${GREP} -Pv "FAILED" \
| ${GREP} -Pv "project :[a-zA-Z0-9]+" \
deps_output=$(./gradlew "${gradleProjectPath}:dependencies")

echo "$deps_output" \
| ( ${GREP} -Poh "(?<=\-\-\- ).*" || true ) \
| ( ${GREP} -Pv "\([nc\*]\)" || true ) \
| ( ${GREP} -Pv "FAILED" || true ) \
| ( ${GREP} -Pv "project\s*[':]" || true ) \
| perl -pe 's/([\w\.\-]+):([\w\.\-]+):(?:[\w\.\-]+ -> )?([\w\.\-]+).*$/$1:$2:$3/gmi;t' \
| perl -pe 's/([\w\.\-]+):([\w\.\-]+) -> ([\w\.\-]+).*$/$1:$2:$3/gmi;t' \
| sort -u \
Expand Down
2 changes: 1 addition & 1 deletion dash.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,5 @@ tasks.register<Exec>("createDashFile") {

workingDir("$rootDir")
commandLine("buildscripts/dash.sh")
args(project.name)
args(project.path)
}
7 changes: 7 additions & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,11 @@ kotlin.code.style=official
# resources declared in the library itself and none from the library's dependencies,
# thereby reducing the size of the R class for that library
android.nonTransitiveRClass=true
android.uniquePackageNames=false
android.dependency.useConstraints=true

# Already fixed by "useConstraints"
android.sync.suppressAgpWarnings=LIBRARY_CONSTRAINTS_SHOULD_BE_DISABLED

org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled
org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true
12 changes: 12 additions & 0 deletions gradle/gradle-daemon-jvm.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#This file is generated by updateDaemonJvm
toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/cb205e54cea236622eee3d62deb2c768/redirect
toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/452acd2202c1005abda962c6dae7fc5f/redirect
toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/cb205e54cea236622eee3d62deb2c768/redirect
toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/452acd2202c1005abda962c6dae7fc5f/redirect
toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/faa59212208d027d066d1bbe337c5da5/redirect
toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/adf5b89d64773eff73f900e61dd2d632/redirect
toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/cb205e54cea236622eee3d62deb2c768/redirect
toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/452acd2202c1005abda962c6dae7fc5f/redirect
toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/e0e37f85a97c5f2df685b37b14a25072/redirect
toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/ccc3884e65cd85bb71a09d2223c77229/redirect
toolchainVersion=21
27 changes: 15 additions & 12 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,21 +1,24 @@
[versions]
agp = "8.5.2"
detektFormatting = "1.23.6"
kotlin = "1.9.22"
junitJupiter = "5.10.1"
detekt = "1.23.6"
coroutines = "1.8.1"
kotest = "5.9.1"
mockk = "1.13.7"
gson = "2.10.1"
kotlinpoet = "1.16.0"
kuksa-java-sdk = "0.3.2"
agp = "9.4.0"
detektFormatting = "1.23.8"
dokka = "2.0.0"
kotlin = "2.4.10"
junitJupiter = "6.1.3"
detekt = "1.23.8"
kotest = "6.2.4"
kotlinxCoroutinesAndroid = "1.11.0"
mockk = "1.14.11"
gson = "2.14.0"
kotlinpoet = "2.3.0"
kuksa-java-sdk = "0.4.0"

[libraries]
junit-jupiter-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "junitJupiter" }
junit-jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junitJupiter" }
detekt-formatting = { module = "io.gitlab.arturbosch.detekt:detekt-formatting", version.ref = "detektFormatting" }
kotest = { group = "io.kotest", name = "kotest-runner-junit5", version.ref = "kotest" }
kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "kotlinxCoroutinesAndroid" }
kotlinx-coroutines-core-jvm = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm", version.ref = "kotlinxCoroutinesAndroid" }
mockk = { group = "io.mockk", name = "mockk", version.ref = "mockk" }
gson = { module = "com.google.code.gson:gson", version.ref = "gson" }
kotlinpoet = { module = "com.squareup:kotlinpoet", version.ref = "kotlinpoet" }
Expand All @@ -29,6 +32,6 @@ android-application = { id = "com.android.application", version.ref = "agp" }
detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" }
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
dokka = { id = "org.jetbrains.dokka", version = "1.9.20" }
dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" }
pluginPublishing = { id = "com.gradle.plugin-publish", version = "1.2.1" }
gradle-nexus-publish-plugin = { id = "io.github.gradle-nexus.publish-plugin", version = "2.0.0" }
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,6 @@
#Mon Jul 01 07:49:50 CEST 2024
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.7.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
10 changes: 5 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@
"author": "",
"license": "Apache-2.0",
"devDependencies": {
"@commitlint/cli": "^17.6.6",
"@commitlint/config-conventional": "^17.6.6",
"commit-and-tag-version": "^11.3.0",
"husky": "^8.0.3"
"@commitlint/cli": "^21.2.2",
"@commitlint/config-conventional": "^21.2.2",
"commit-and-tag-version": "^13.1.2",
"husky": "^9.1.7"
},
"scripts": {
"postinstall": "husky install",
"postinstall": "husky",
"tag-release": "npx commit-and-tag-version --packageFiles version.txt -t release/v --skip.commit=true --skip.changelog=true --skip.bump=true",
"commit-release": "npx commit-and-tag-version --packageFiles version.txt -t release/v --bumpFiles version.txt --skip.tag=true",
"bump-release": "npx commit-and-tag-version --packageFiles version.txt -t release/v --bumpFiles version.txt --skip.tag=true --skip.commit=true",
Expand Down
Loading
Loading