diff --git a/pom.xml b/pom.xml
index 6939744..ae85dee 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,19 +7,78 @@
dev.sqlcj
sqlcj
0.1.0-SNAPSHOT
+ pom
sqlcj
SQL compiler and type-safe code generator for Java
+
+ sqlcj-runtime
+ sqlcj-cli
+
+
21
UTF-8
3.10.2
4.40
+ ${project.basedir}/config/eclipse-java-formatter.xml
+ 4.7.7
+ 3.2.1
+ 5.3
+ 6.1.2
+ 2.4.240
+ 1.21.4
+ 42.7.13
+ 1.28.0
+
+ dev.sqlcj
+ sqlcj-runtime
+ ${project.version}
+
+
+ info.picocli
+ picocli
+ ${picocli.version}
+
+
+ tools.jackson.dataformat
+ jackson-dataformat-yaml
+ ${jackson.version}
+
+
+ com.github.jsqlparser
+ jsqlparser
+ ${jsqlparser.version}
+
+
+ org.junit.jupiter
+ junit-jupiter
+ ${junit.version}
+ test
+
+
+ com.h2database
+ h2
+ ${h2.version}
+ test
+
+
+ org.testcontainers
+ postgresql
+ ${testcontainers.version}
+ test
+
+
+ org.postgresql
+ postgresql
+ ${postgresql.version}
+ test
+
+
+ dev.sqlcj
+ sqlcj-runtime
+ test
+
+
+ org.testcontainers
+ postgresql
+ test
+
+
+ org.postgresql
+ postgresql
+ test
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+
+ dev.sqlcj.Main
+ true
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+
+
+ shade-cli
+ package
+
+ shade
+
+
+ false
+
+
+ *:*
+
+ module-info.class
+ META-INF/*.SF
+ META-INF/*.DSA
+ META-INF/*.RSA
+
+
+
+
+
+ dev.sqlcj.Main
+
+ ${project.name}
+ ${project.version}
+
+
+
+
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+
+ dev.sqlcj.Main
+
+
+
+
+
diff --git a/src/main/java/dev/sqlcj/Main.java b/sqlcj-cli/src/main/java/dev/sqlcj/Main.java
similarity index 100%
rename from src/main/java/dev/sqlcj/Main.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/Main.java
diff --git a/src/main/java/dev/sqlcj/analysis/QueryAnalyzer.java b/sqlcj-cli/src/main/java/dev/sqlcj/analysis/QueryAnalyzer.java
similarity index 100%
rename from src/main/java/dev/sqlcj/analysis/QueryAnalyzer.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/analysis/QueryAnalyzer.java
diff --git a/src/main/java/dev/sqlcj/analysis/QueryColumn.java b/sqlcj-cli/src/main/java/dev/sqlcj/analysis/QueryColumn.java
similarity index 100%
rename from src/main/java/dev/sqlcj/analysis/QueryColumn.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/analysis/QueryColumn.java
diff --git a/src/main/java/dev/sqlcj/analysis/QueryModel.java b/sqlcj-cli/src/main/java/dev/sqlcj/analysis/QueryModel.java
similarity index 100%
rename from src/main/java/dev/sqlcj/analysis/QueryModel.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/analysis/QueryModel.java
diff --git a/src/main/java/dev/sqlcj/analysis/QueryParameter.java b/sqlcj-cli/src/main/java/dev/sqlcj/analysis/QueryParameter.java
similarity index 100%
rename from src/main/java/dev/sqlcj/analysis/QueryParameter.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/analysis/QueryParameter.java
diff --git a/src/main/java/dev/sqlcj/cli/SqlcjCommand.java b/sqlcj-cli/src/main/java/dev/sqlcj/cli/SqlcjCommand.java
similarity index 100%
rename from src/main/java/dev/sqlcj/cli/SqlcjCommand.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/cli/SqlcjCommand.java
diff --git a/src/main/java/dev/sqlcj/cli/command/GenerateCommand.java b/sqlcj-cli/src/main/java/dev/sqlcj/cli/command/GenerateCommand.java
similarity index 100%
rename from src/main/java/dev/sqlcj/cli/command/GenerateCommand.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/cli/command/GenerateCommand.java
diff --git a/src/main/java/dev/sqlcj/cli/command/VersionCommand.java b/sqlcj-cli/src/main/java/dev/sqlcj/cli/command/VersionCommand.java
similarity index 100%
rename from src/main/java/dev/sqlcj/cli/command/VersionCommand.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/cli/command/VersionCommand.java
diff --git a/src/main/java/dev/sqlcj/compiler/CompilationException.java b/sqlcj-cli/src/main/java/dev/sqlcj/compiler/CompilationException.java
similarity index 100%
rename from src/main/java/dev/sqlcj/compiler/CompilationException.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/compiler/CompilationException.java
diff --git a/src/main/java/dev/sqlcj/compiler/DefaultSourceLoader.java b/sqlcj-cli/src/main/java/dev/sqlcj/compiler/DefaultSourceLoader.java
similarity index 100%
rename from src/main/java/dev/sqlcj/compiler/DefaultSourceLoader.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/compiler/DefaultSourceLoader.java
diff --git a/src/main/java/dev/sqlcj/compiler/Source.java b/sqlcj-cli/src/main/java/dev/sqlcj/compiler/Source.java
similarity index 100%
rename from src/main/java/dev/sqlcj/compiler/Source.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/compiler/Source.java
diff --git a/src/main/java/dev/sqlcj/compiler/SourceLoader.java b/sqlcj-cli/src/main/java/dev/sqlcj/compiler/SourceLoader.java
similarity index 100%
rename from src/main/java/dev/sqlcj/compiler/SourceLoader.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/compiler/SourceLoader.java
diff --git a/src/main/java/dev/sqlcj/compiler/SqlcjCompiler.java b/sqlcj-cli/src/main/java/dev/sqlcj/compiler/SqlcjCompiler.java
similarity index 100%
rename from src/main/java/dev/sqlcj/compiler/SqlcjCompiler.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/compiler/SqlcjCompiler.java
diff --git a/src/main/java/dev/sqlcj/config/Config.java b/sqlcj-cli/src/main/java/dev/sqlcj/config/Config.java
similarity index 100%
rename from src/main/java/dev/sqlcj/config/Config.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/config/Config.java
diff --git a/src/main/java/dev/sqlcj/config/ConfigLoader.java b/sqlcj-cli/src/main/java/dev/sqlcj/config/ConfigLoader.java
similarity index 100%
rename from src/main/java/dev/sqlcj/config/ConfigLoader.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/config/ConfigLoader.java
diff --git a/src/main/java/dev/sqlcj/config/ConfigValidator.java b/sqlcj-cli/src/main/java/dev/sqlcj/config/ConfigValidator.java
similarity index 100%
rename from src/main/java/dev/sqlcj/config/ConfigValidator.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/config/ConfigValidator.java
diff --git a/src/main/java/dev/sqlcj/config/ConfigurationException.java b/sqlcj-cli/src/main/java/dev/sqlcj/config/ConfigurationException.java
similarity index 100%
rename from src/main/java/dev/sqlcj/config/ConfigurationException.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/config/ConfigurationException.java
diff --git a/src/main/java/dev/sqlcj/config/JavaConfig.java b/sqlcj-cli/src/main/java/dev/sqlcj/config/JavaConfig.java
similarity index 100%
rename from src/main/java/dev/sqlcj/config/JavaConfig.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/config/JavaConfig.java
diff --git a/src/main/java/dev/sqlcj/config/SqlConfig.java b/sqlcj-cli/src/main/java/dev/sqlcj/config/SqlConfig.java
similarity index 100%
rename from src/main/java/dev/sqlcj/config/SqlConfig.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/config/SqlConfig.java
diff --git a/src/main/java/dev/sqlcj/config/YamlConfigLoader.java b/sqlcj-cli/src/main/java/dev/sqlcj/config/YamlConfigLoader.java
similarity index 100%
rename from src/main/java/dev/sqlcj/config/YamlConfigLoader.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/config/YamlConfigLoader.java
diff --git a/src/main/java/dev/sqlcj/generator/CodeGenerator.java b/sqlcj-cli/src/main/java/dev/sqlcj/generator/CodeGenerator.java
similarity index 100%
rename from src/main/java/dev/sqlcj/generator/CodeGenerator.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/generator/CodeGenerator.java
diff --git a/src/main/java/dev/sqlcj/generator/GeneratedFile.java b/sqlcj-cli/src/main/java/dev/sqlcj/generator/GeneratedFile.java
similarity index 100%
rename from src/main/java/dev/sqlcj/generator/GeneratedFile.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/generator/GeneratedFile.java
diff --git a/src/main/java/dev/sqlcj/generator/JavaCodeGenerator.java b/sqlcj-cli/src/main/java/dev/sqlcj/generator/JavaCodeGenerator.java
similarity index 100%
rename from src/main/java/dev/sqlcj/generator/JavaCodeGenerator.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/generator/JavaCodeGenerator.java
diff --git a/src/main/java/dev/sqlcj/generator/JavaNames.java b/sqlcj-cli/src/main/java/dev/sqlcj/generator/JavaNames.java
similarity index 100%
rename from src/main/java/dev/sqlcj/generator/JavaNames.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/generator/JavaNames.java
diff --git a/src/main/java/dev/sqlcj/io/DefaultFileLoader.java b/sqlcj-cli/src/main/java/dev/sqlcj/io/DefaultFileLoader.java
similarity index 100%
rename from src/main/java/dev/sqlcj/io/DefaultFileLoader.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/io/DefaultFileLoader.java
diff --git a/src/main/java/dev/sqlcj/io/FileLoader.java b/sqlcj-cli/src/main/java/dev/sqlcj/io/FileLoader.java
similarity index 100%
rename from src/main/java/dev/sqlcj/io/FileLoader.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/io/FileLoader.java
diff --git a/src/main/java/dev/sqlcj/io/GeneratedFileWriter.java b/sqlcj-cli/src/main/java/dev/sqlcj/io/GeneratedFileWriter.java
similarity index 100%
rename from src/main/java/dev/sqlcj/io/GeneratedFileWriter.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/io/GeneratedFileWriter.java
diff --git a/src/main/java/dev/sqlcj/parser/DefaultQueryParser.java b/sqlcj-cli/src/main/java/dev/sqlcj/parser/DefaultQueryParser.java
similarity index 100%
rename from src/main/java/dev/sqlcj/parser/DefaultQueryParser.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/parser/DefaultQueryParser.java
diff --git a/src/main/java/dev/sqlcj/parser/Query.java b/sqlcj-cli/src/main/java/dev/sqlcj/parser/Query.java
similarity index 100%
rename from src/main/java/dev/sqlcj/parser/Query.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/parser/Query.java
diff --git a/src/main/java/dev/sqlcj/parser/QueryHeader.java b/sqlcj-cli/src/main/java/dev/sqlcj/parser/QueryHeader.java
similarity index 100%
rename from src/main/java/dev/sqlcj/parser/QueryHeader.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/parser/QueryHeader.java
diff --git a/src/main/java/dev/sqlcj/parser/QueryParser.java b/sqlcj-cli/src/main/java/dev/sqlcj/parser/QueryParser.java
similarity index 100%
rename from src/main/java/dev/sqlcj/parser/QueryParser.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/parser/QueryParser.java
diff --git a/src/main/java/dev/sqlcj/parser/QueryType.java b/sqlcj-cli/src/main/java/dev/sqlcj/parser/QueryType.java
similarity index 100%
rename from src/main/java/dev/sqlcj/parser/QueryType.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/parser/QueryType.java
diff --git a/src/main/java/dev/sqlcj/schema/Column.java b/sqlcj-cli/src/main/java/dev/sqlcj/schema/Column.java
similarity index 100%
rename from src/main/java/dev/sqlcj/schema/Column.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/schema/Column.java
diff --git a/src/main/java/dev/sqlcj/schema/ColumnType.java b/sqlcj-cli/src/main/java/dev/sqlcj/schema/ColumnType.java
similarity index 100%
rename from src/main/java/dev/sqlcj/schema/ColumnType.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/schema/ColumnType.java
diff --git a/src/main/java/dev/sqlcj/schema/Constraint.java b/sqlcj-cli/src/main/java/dev/sqlcj/schema/Constraint.java
similarity index 100%
rename from src/main/java/dev/sqlcj/schema/Constraint.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/schema/Constraint.java
diff --git a/src/main/java/dev/sqlcj/schema/ConstraintType.java b/sqlcj-cli/src/main/java/dev/sqlcj/schema/ConstraintType.java
similarity index 100%
rename from src/main/java/dev/sqlcj/schema/ConstraintType.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/schema/ConstraintType.java
diff --git a/src/main/java/dev/sqlcj/schema/Schema.java b/sqlcj-cli/src/main/java/dev/sqlcj/schema/Schema.java
similarity index 100%
rename from src/main/java/dev/sqlcj/schema/Schema.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/schema/Schema.java
diff --git a/src/main/java/dev/sqlcj/schema/Table.java b/sqlcj-cli/src/main/java/dev/sqlcj/schema/Table.java
similarity index 100%
rename from src/main/java/dev/sqlcj/schema/Table.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/schema/Table.java
diff --git a/src/main/java/dev/sqlcj/schema/parser/DefaultSchemaParser.java b/sqlcj-cli/src/main/java/dev/sqlcj/schema/parser/DefaultSchemaParser.java
similarity index 100%
rename from src/main/java/dev/sqlcj/schema/parser/DefaultSchemaParser.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/schema/parser/DefaultSchemaParser.java
diff --git a/src/main/java/dev/sqlcj/schema/parser/SchemaParseException.java b/sqlcj-cli/src/main/java/dev/sqlcj/schema/parser/SchemaParseException.java
similarity index 100%
rename from src/main/java/dev/sqlcj/schema/parser/SchemaParseException.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/schema/parser/SchemaParseException.java
diff --git a/src/main/java/dev/sqlcj/schema/parser/SchemaParser.java b/sqlcj-cli/src/main/java/dev/sqlcj/schema/parser/SchemaParser.java
similarity index 100%
rename from src/main/java/dev/sqlcj/schema/parser/SchemaParser.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/schema/parser/SchemaParser.java
diff --git a/src/main/java/dev/sqlcj/sql/ParsedSql.java b/sqlcj-cli/src/main/java/dev/sqlcj/sql/ParsedSql.java
similarity index 100%
rename from src/main/java/dev/sqlcj/sql/ParsedSql.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/sql/ParsedSql.java
diff --git a/src/main/java/dev/sqlcj/sql/SqlParameterCompiler.java b/sqlcj-cli/src/main/java/dev/sqlcj/sql/SqlParameterCompiler.java
similarity index 100%
rename from src/main/java/dev/sqlcj/sql/SqlParameterCompiler.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/sql/SqlParameterCompiler.java
diff --git a/src/main/java/dev/sqlcj/sql/SqlParameters.java b/sqlcj-cli/src/main/java/dev/sqlcj/sql/SqlParameters.java
similarity index 100%
rename from src/main/java/dev/sqlcj/sql/SqlParameters.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/sql/SqlParameters.java
diff --git a/src/main/java/dev/sqlcj/sql/SqlParseException.java b/sqlcj-cli/src/main/java/dev/sqlcj/sql/SqlParseException.java
similarity index 100%
rename from src/main/java/dev/sqlcj/sql/SqlParseException.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/sql/SqlParseException.java
diff --git a/src/main/java/dev/sqlcj/sql/SqlParser.java b/sqlcj-cli/src/main/java/dev/sqlcj/sql/SqlParser.java
similarity index 100%
rename from src/main/java/dev/sqlcj/sql/SqlParser.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/sql/SqlParser.java
diff --git a/src/main/java/dev/sqlcj/type/DefaultTypeResolver.java b/sqlcj-cli/src/main/java/dev/sqlcj/type/DefaultTypeResolver.java
similarity index 100%
rename from src/main/java/dev/sqlcj/type/DefaultTypeResolver.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/type/DefaultTypeResolver.java
diff --git a/src/main/java/dev/sqlcj/type/TypeResolver.java b/sqlcj-cli/src/main/java/dev/sqlcj/type/TypeResolver.java
similarity index 100%
rename from src/main/java/dev/sqlcj/type/TypeResolver.java
rename to sqlcj-cli/src/main/java/dev/sqlcj/type/TypeResolver.java
diff --git a/src/test/java/dev/sqlcj/analysis/QueryAnalyzerTest.java b/sqlcj-cli/src/test/java/dev/sqlcj/analysis/QueryAnalyzerTest.java
similarity index 100%
rename from src/test/java/dev/sqlcj/analysis/QueryAnalyzerTest.java
rename to sqlcj-cli/src/test/java/dev/sqlcj/analysis/QueryAnalyzerTest.java
diff --git a/src/test/java/dev/sqlcj/cli/command/GenerateCommandTest.java b/sqlcj-cli/src/test/java/dev/sqlcj/cli/command/GenerateCommandTest.java
similarity index 100%
rename from src/test/java/dev/sqlcj/cli/command/GenerateCommandTest.java
rename to sqlcj-cli/src/test/java/dev/sqlcj/cli/command/GenerateCommandTest.java
diff --git a/src/test/java/dev/sqlcj/compiler/DefaultSourceLoaderTest.java b/sqlcj-cli/src/test/java/dev/sqlcj/compiler/DefaultSourceLoaderTest.java
similarity index 100%
rename from src/test/java/dev/sqlcj/compiler/DefaultSourceLoaderTest.java
rename to sqlcj-cli/src/test/java/dev/sqlcj/compiler/DefaultSourceLoaderTest.java
diff --git a/src/test/java/dev/sqlcj/compiler/PostgresIntegrationTest.java b/sqlcj-cli/src/test/java/dev/sqlcj/compiler/PostgresIntegrationTest.java
similarity index 100%
rename from src/test/java/dev/sqlcj/compiler/PostgresIntegrationTest.java
rename to sqlcj-cli/src/test/java/dev/sqlcj/compiler/PostgresIntegrationTest.java
diff --git a/src/test/java/dev/sqlcj/compiler/SqlcjCompilerIntegrationTest.java b/sqlcj-cli/src/test/java/dev/sqlcj/compiler/SqlcjCompilerIntegrationTest.java
similarity index 100%
rename from src/test/java/dev/sqlcj/compiler/SqlcjCompilerIntegrationTest.java
rename to sqlcj-cli/src/test/java/dev/sqlcj/compiler/SqlcjCompilerIntegrationTest.java
diff --git a/src/test/java/dev/sqlcj/config/YamlConfigLoaderTest.java b/sqlcj-cli/src/test/java/dev/sqlcj/config/YamlConfigLoaderTest.java
similarity index 100%
rename from src/test/java/dev/sqlcj/config/YamlConfigLoaderTest.java
rename to sqlcj-cli/src/test/java/dev/sqlcj/config/YamlConfigLoaderTest.java
diff --git a/src/test/java/dev/sqlcj/generator/JavaCodeGeneratorNamingTest.java b/sqlcj-cli/src/test/java/dev/sqlcj/generator/JavaCodeGeneratorNamingTest.java
similarity index 100%
rename from src/test/java/dev/sqlcj/generator/JavaCodeGeneratorNamingTest.java
rename to sqlcj-cli/src/test/java/dev/sqlcj/generator/JavaCodeGeneratorNamingTest.java
diff --git a/src/test/java/dev/sqlcj/generator/JavaCodeGeneratorTest.java b/sqlcj-cli/src/test/java/dev/sqlcj/generator/JavaCodeGeneratorTest.java
similarity index 100%
rename from src/test/java/dev/sqlcj/generator/JavaCodeGeneratorTest.java
rename to sqlcj-cli/src/test/java/dev/sqlcj/generator/JavaCodeGeneratorTest.java
diff --git a/src/test/java/dev/sqlcj/generator/JavaNamesTest.java b/sqlcj-cli/src/test/java/dev/sqlcj/generator/JavaNamesTest.java
similarity index 100%
rename from src/test/java/dev/sqlcj/generator/JavaNamesTest.java
rename to sqlcj-cli/src/test/java/dev/sqlcj/generator/JavaNamesTest.java
diff --git a/src/test/java/dev/sqlcj/io/GeneratedFileWriterTest.java b/sqlcj-cli/src/test/java/dev/sqlcj/io/GeneratedFileWriterTest.java
similarity index 100%
rename from src/test/java/dev/sqlcj/io/GeneratedFileWriterTest.java
rename to sqlcj-cli/src/test/java/dev/sqlcj/io/GeneratedFileWriterTest.java
diff --git a/src/test/java/dev/sqlcj/parser/DefaultQueryParserTest.java b/sqlcj-cli/src/test/java/dev/sqlcj/parser/DefaultQueryParserTest.java
similarity index 100%
rename from src/test/java/dev/sqlcj/parser/DefaultQueryParserTest.java
rename to sqlcj-cli/src/test/java/dev/sqlcj/parser/DefaultQueryParserTest.java
diff --git a/src/test/java/dev/sqlcj/schema/parser/DefaultSchemaParserTest.java b/sqlcj-cli/src/test/java/dev/sqlcj/schema/parser/DefaultSchemaParserTest.java
similarity index 100%
rename from src/test/java/dev/sqlcj/schema/parser/DefaultSchemaParserTest.java
rename to sqlcj-cli/src/test/java/dev/sqlcj/schema/parser/DefaultSchemaParserTest.java
diff --git a/src/test/java/dev/sqlcj/sql/SqlParameterCompilerTest.java b/sqlcj-cli/src/test/java/dev/sqlcj/sql/SqlParameterCompilerTest.java
similarity index 100%
rename from src/test/java/dev/sqlcj/sql/SqlParameterCompilerTest.java
rename to sqlcj-cli/src/test/java/dev/sqlcj/sql/SqlParameterCompilerTest.java
diff --git a/src/test/java/dev/sqlcj/sql/SqlParserTest.java b/sqlcj-cli/src/test/java/dev/sqlcj/sql/SqlParserTest.java
similarity index 100%
rename from src/test/java/dev/sqlcj/sql/SqlParserTest.java
rename to sqlcj-cli/src/test/java/dev/sqlcj/sql/SqlParserTest.java
diff --git a/sqlcj-runtime/pom.xml b/sqlcj-runtime/pom.xml
new file mode 100644
index 0000000..76cb810
--- /dev/null
+++ b/sqlcj-runtime/pom.xml
@@ -0,0 +1,21 @@
+
+
+ 4.0.0
+
+
+ dev.sqlcj
+ sqlcj
+ 0.1.0-SNAPSHOT
+
+
+ sqlcj-runtime
+
+ sqlcj runtime
+ JDBC runtime used by sqlcj generated code
+
+
+ ${project.basedir}/../config/eclipse-java-formatter.xml
+
+
diff --git a/src/main/java/dev/sqlcj/runtime/JdbcQueryExecutor.java b/sqlcj-runtime/src/main/java/dev/sqlcj/runtime/JdbcQueryExecutor.java
similarity index 100%
rename from src/main/java/dev/sqlcj/runtime/JdbcQueryExecutor.java
rename to sqlcj-runtime/src/main/java/dev/sqlcj/runtime/JdbcQueryExecutor.java
diff --git a/src/main/java/dev/sqlcj/runtime/QueryExecutionException.java b/sqlcj-runtime/src/main/java/dev/sqlcj/runtime/QueryExecutionException.java
similarity index 100%
rename from src/main/java/dev/sqlcj/runtime/QueryExecutionException.java
rename to sqlcj-runtime/src/main/java/dev/sqlcj/runtime/QueryExecutionException.java
diff --git a/src/main/java/dev/sqlcj/runtime/QueryExecutor.java b/sqlcj-runtime/src/main/java/dev/sqlcj/runtime/QueryExecutor.java
similarity index 100%
rename from src/main/java/dev/sqlcj/runtime/QueryExecutor.java
rename to sqlcj-runtime/src/main/java/dev/sqlcj/runtime/QueryExecutor.java
diff --git a/src/main/java/dev/sqlcj/runtime/RowMapper.java b/sqlcj-runtime/src/main/java/dev/sqlcj/runtime/RowMapper.java
similarity index 100%
rename from src/main/java/dev/sqlcj/runtime/RowMapper.java
rename to sqlcj-runtime/src/main/java/dev/sqlcj/runtime/RowMapper.java
diff --git a/src/test/java/dev/sqlcj/runtime/JdbcQueryExecutorTest.java b/sqlcj-runtime/src/test/java/dev/sqlcj/runtime/JdbcQueryExecutorTest.java
similarity index 100%
rename from src/test/java/dev/sqlcj/runtime/JdbcQueryExecutorTest.java
rename to sqlcj-runtime/src/test/java/dev/sqlcj/runtime/JdbcQueryExecutorTest.java