Put executable into build/bin

Change-Id: I0908d61a50be2faa3367cb3182950855dff9ff16
diff --git a/app/build.gradle b/app/build.gradle
index 8ae215f..0fad0bc 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -144,7 +144,11 @@
 tasks.register('assembleShebangExecutable') {
     dependsOn shadowJar
     inputs.file(rootProject.file("korapxmltool.shebang"))
-    outputs.file(new File(shadowJar.archiveFile.get().asFile.parent, "korapxmltool"))
+    inputs.file(shadowJar.archiveFile)
+    
+    def binDir = rootProject.file("build/bin")
+    def targetExec = new File(binDir, "korapxmltool")
+    outputs.file(targetExec)
 
     doLast {
         def shebang = rootProject.file("korapxmltool.shebang")
@@ -152,8 +156,10 @@
             throw new GradleException("Missing shebang stub: ${shebang}")
         }
 
+        // Ensure bin directory exists
+        binDir.mkdirs()
+
         def targetJar = shadowJar.archiveFile.get().asFile
-        def targetExec = new File(targetJar.parent, "korapxmltool")
 
         targetExec.withOutputStream { os ->
             os << shebang.bytes
@@ -164,6 +170,11 @@
     }
 }
 
+tasks.named('assemble') {
+    dependsOn createJarSymlink
+    dependsOn assembleShebangExecutable
+}
+
 tasks.named('build') {
     dependsOn createJarSymlink
     dependsOn assembleShebangExecutable