diff --git a/ci/templates/maven-test-project/.gitignore b/ci/templates/maven-test-project/.gitignore
new file mode 100644
index 00000000000..69651f95018
--- /dev/null
+++ b/ci/templates/maven-test-project/.gitignore
@@ -0,0 +1,16 @@
+*.iml
+.gradle
+/local.properties
+/.idea
+/.idea/caches
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+/.idea/navEditor.xml
+/.idea/assetWizardSettings.xml
+.DS_Store
+build/
+target/
+/captures
+.externalNativeBuild
+.cxx
diff --git a/ci/templates/maven-test-project/README.md b/ci/templates/maven-test-project/README.md
new file mode 100644
index 00000000000..8de7396e727
--- /dev/null
+++ b/ci/templates/maven-test-project/README.md
@@ -0,0 +1,5 @@
+The purpose of this test project is to check if Compose Multiplatform is resolvable via pom files, which are used by JPS, which is used by IntelliJ
+
+```
+mvn install exec:java -Dexec.mainClass="MainKt" -Dkotlin.version=2.1.0 -Dcompose.version=1.8.0-alpha02
+```
diff --git a/ci/templates/maven-test-project/pom.xml b/ci/templates/maven-test-project/pom.xml
new file mode 100644
index 00000000000..9fa3a6142d8
--- /dev/null
+++ b/ci/templates/maven-test-project/pom.xml
@@ -0,0 +1,189 @@
+
+
+ 4.0.0
+
+ org.example
+ maven-test-project
+ 1.0-SNAPSHOT
+
+
+ UTF-8
+ official
+ 1.8
+ 2.1.0
+ 1.8.0-alpha02
+
+
+
+
+ mavenCentral
+ https://repo1.maven.org/maven2/
+
+
+ gMaven
+ https://maven.google.com/
+
+
+ composeDev
+ https://maven.pkg.jetbrains.space/public/p/compose/dev
+
+
+
+
+ src/main/kotlin
+ src/test/kotlin
+
+
+ org.jetbrains.kotlin
+ kotlin-maven-plugin
+ ${kotlin.version}
+
+
+ compile
+ compile
+
+ compile
+
+
+
+ test-compile
+ test-compile
+
+ test-compile
+
+
+
+
+ org.jetbrains.kotlin:kotlin-compose-compiler-plugin-embeddable
+ -Xplugin=${user.home}/.m2/repository/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/${kotlin.version}/kotlin-compose-compiler-plugin-${kotlin.version}.jar
+
+
+
+
+ maven-surefire-plugin
+ 2.22.2
+
+
+ maven-failsafe-plugin
+ 2.22.2
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.6.0
+
+ MainKt
+
+
+
+
+
+
+
+ org.jetbrains.kotlin
+ kotlin-test-junit5
+ ${kotlin.version}
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter
+ 5.10.0
+ test
+
+
+ org.jetbrains.kotlin
+ kotlin-stdlib
+ ${kotlin.version}
+
+
+ org.jetbrains.compose.material3
+ material3-desktop
+ ${compose.version}
+
+
+
+ org.jetbrains.compose.desktop
+ desktop-jvm-windows-x64
+ ${compose.version}
+ pom
+
+
+ org.jetbrains.compose.desktop
+ desktop
+
+
+
+
+ org.jetbrains.compose.desktop
+ desktop-jvm-windows-arm64
+ ${compose.version}
+ pom
+
+
+ org.jetbrains.compose.desktop
+ desktop
+
+
+
+
+
+ org.jetbrains.compose.desktop
+ desktop-jvm-linux-x64
+ ${compose.version}
+ pom
+
+
+ org.jetbrains.compose.desktop
+ desktop
+
+
+
+
+ org.jetbrains.compose.desktop
+ desktop-jvm-linux-arm64
+ ${compose.version}
+ pom
+
+
+ org.jetbrains.compose.desktop
+ desktop
+
+
+
+
+
+ org.jetbrains.compose.desktop
+ desktop-jvm-macos-x64
+ ${compose.version}
+ pom
+
+
+ org.jetbrains.compose.desktop
+ desktop
+
+
+
+
+ org.jetbrains.compose.desktop
+ desktop-jvm-macos-arm64
+ ${compose.version}
+ pom
+
+
+ org.jetbrains.compose.desktop
+ desktop
+
+
+
+
+
+ org.jetbrains.kotlin
+ kotlin-compose-compiler-plugin
+ ${kotlin.version}
+
+
+
+
\ No newline at end of file
diff --git a/ci/templates/maven-test-project/src/main/kotlin/Main.kt b/ci/templates/maven-test-project/src/main/kotlin/Main.kt
new file mode 100644
index 00000000000..be692772c7f
--- /dev/null
+++ b/ci/templates/maven-test-project/src/main/kotlin/Main.kt
@@ -0,0 +1,30 @@
+import androidx.compose.material3.Button
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Text
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
+import androidx.compose.ui.window.Window
+import androidx.compose.ui.window.application
+import kotlinx.coroutines.delay
+
+fun main() = application {
+ Window(onCloseRequest = ::exitApplication) {
+ LaunchedEffect(Unit) {
+ delay(1000)
+ exitApplication()
+ }
+
+ var text by remember { mutableStateOf("Hello, World!") }
+
+ MaterialTheme {
+ Button(onClick = {
+ text = "Hello, Desktop!"
+ }) {
+ Text(text)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tools/replaceVersion.sh b/tools/replaceVersion.sh
index d4722b2bfe8..380cb45e31f 100755
--- a/tools/replaceVersion.sh
+++ b/tools/replaceVersion.sh
@@ -47,11 +47,13 @@ replaceVersion() {
replaceVersionInFile() {
echo "Replace in $1"
replaceVersion '^compose.version=.*' 'compose.version='"$COMPOSE_VERSION"'' $1
+ replaceVersion '.*<\/compose.version>' ''"$COMPOSE_VERSION"'<\/compose.version>' $1
replaceVersion '^COMPOSE_CORE_VERSION=.*' 'COMPOSE_CORE_VERSION='"$COMPOSE_VERSION"'' $1
replaceVersion '^COMPOSE_WEB_VERSION=.*' 'COMPOSE_WEB_VERSION='"$COMPOSE_VERSION"'' $1
replaceVersion 'id("org.jetbrains.compose") version ".*"' 'id("org.jetbrains.compose") version "'"$COMPOSE_VERSION"'"' $1
replaceVersion '"org.jetbrains.compose:compose-gradle-plugin:.*"' '"org.jetbrains.compose:compose-gradle-plugin:'"$COMPOSE_VERSION"'"' $1
replaceVersion '^kotlin.version=.*' 'kotlin.version='"$KOTLIN_VERSION"'' $1
+ replaceVersion '.*<\/kotlin.version>' ''"$KOTLIN_VERSION"'<\/kotlin.version>' $1
replaceVersion '^compose.tests.compiler.compatible.kotlin.version=.*' 'compose.tests.compiler.compatible.kotlin.version='"$KOTLIN_VERSION"'' $1
replaceVersion '^compose.tests.js.compiler.compatible.kotlin.version=.*' 'compose.tests.js.compiler.compatible.kotlin.version='"$KOTLIN_VERSION"'' $1
replaceVersion 'kotlin("multiplatform") version ".*"' 'kotlin("multiplatform") version "'"$KOTLIN_VERSION"'"' $1
@@ -65,5 +67,6 @@ replaceVersionInFolder() {
for folder in "${folders[@]}"
do
replaceVersionInFolder $folder "**gradle.properties"
+ replaceVersionInFolder $folder "**pom.xml"
replaceVersionInFolder $folder "**README.md"
done