Skip to content

CLI Reference

swift4j-cli is the code generator that produces Kotlin and Java proxy classes from Swift source files. The generate-java-bridging SPM plugin invokes it automatically — use the CLI directly only when you need to integrate code generation into a custom build pipeline.

Terminal window
swift4j-cli [options] <swift-files...>

Pass one or more .swift source files. The tool parses them, finds all @jvm-annotated types, and generates proxy classes.

OptionRequiredDefaultDescription
--package <name>YesJava package name for the generated classes
-o <dir> / --outdir <dir>NostdoutDirectory to write generated files into
--java-version <version>No11Java language compatibility level
--generate-android-viewmodelsNooffGenerate Android ViewModel wrappers for @Observable types

Generate to stdout (useful for inspection):

Terminal window
swift4j-cli --package com.example.mylib Sources/MyLib/Service.swift

Generate to a directory:

Terminal window
swift4j-cli --package com.example.mylib \
-o generated/src/main/java \
Sources/MyLib/Service.swift \
Sources/MyLib/Models.swift

Generate with Android ViewModel support:

Terminal window
swift4j-cli --package com.example.mylib \
--generate-android-viewmodels \
-o generated/src/main/java \
Sources/MyLib/*.swift

The --package value becomes the Java/Kotlin package declaration in all generated files. The generated class for a Swift type Foo in package com.example.mylib is imported in Kotlin as:

import com.example.mylib.Foo

When using the SPM generate-java-bridging plugin, the package name is derived automatically from the target name (hyphens replaced with underscores). Pass --package only when invoking the CLI directly.