diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 03c3a23804..e834e33229 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,7 @@ jobs: - name: Build Cache uses: ./.github/actions/build-cache - name: Test - run: mvn test --batch-mode + run: mvn -f kotlin-runtime/ftl-runtime -B test test: name: Test Go runs-on: ubuntu-latest diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 58fc733479..a898cafddf 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -112,9 +112,9 @@ jobs: cache: "maven" - name: Publish JARs # Snapshots are published first, then the tagged release run: | - mvn -U -B clean deploy -P release - mvn -B versions:set -DnewVersion="$(git describe --tags --abbrev=0 | cut -c2-)" -DprocessAllModules -DgenerateBackupPoms=false - mvn -U -B clean deploy -P release + mvn -f kotlin-runtime/ftl-runtime -U -B clean deploy -P release + mvn -f kotlin-runtime/ftl-runtime -B versions:set -DnewVersion="$(git describe --tags --abbrev=0 | cut -c2-)" -DprocessAllModules -DgenerateBackupPoms=false + mvn -f kotlin-runtime/ftl-runtime -U -B clean deploy -P release git clean -f ./*.flattened_pom.xml env: SIGN_KEY_PASS: ${{ secrets.GPG_PASSPHRASE }} diff --git a/.github/workflows/writecache.yml b/.github/workflows/writecache.yml index 242de489d2..6c3b881e79 100644 --- a/.github/workflows/writecache.yml +++ b/.github/workflows/writecache.yml @@ -24,7 +24,7 @@ jobs: - name: Rebuild All run: bit - name: Download Maven Dependencies - run: mvn dependency:resolve --batch-mode + run: mvn -f kotlin-runtime/ftl-runtime dependency:resolve --batch-mode - name: Download Go Dependencies run: go mod download -x - id: find-go-build-cache diff --git a/Bitfile b/Bitfile index 2d5d5159ea..4b51008e70 100644 --- a/Bitfile +++ b/Bitfile @@ -27,7 +27,7 @@ PROTO_OUT = backend/protos/xyz/block/ftl/v1/ftlv1connect/ftl.connect.go \ COMMON_LOG_IN = internal/log/api.go COMMON_LOG_OUT = internal/log/log_level_string.go -KT_RUNTIME_IN = kotlin-runtime/ftl-runtime/**/*.{kt,kts} pom.xml kotlin-runtime/ftl-runtime/**/pom.xml +KT_RUNTIME_IN = kotlin-runtime/ftl-runtime/**/*.{kt,kts} kotlin-runtime/ftl-runtime/**/pom.xml KT_RUNTIME_OUT = kotlin-runtime/ftl-runtime/target/ftl-runtime-1.0-SNAPSHOT.jar KT_RUNTIME_RUNNER_TEMPLATE_OUT = build/template/ftl/jars/ftl-runtime.jar @@ -113,9 +113,8 @@ kotlin-runtime/external-module-template.zip: kotlin-runtime/external-module-temp %{KT_RUNTIME_OUT}: %{KT_RUNTIME_IN} %{PROTO_IN} # TODO: Figure out how to make Maven build completely offline. Bizarrely "-o" does not do this. build: - mvn -B -N install - mvn -Dmaven.test.skip=true -B -pl :ftl-runtime install - +clean: mvn -B -pl :ftl-runtime clean + mvn -f kotlin-runtime/ftl-runtime -Dmaven.test.skip=true -B install + +clean: mvn -f kotlin-runtime/ftl-runtime -B install clean %(dirname %{KT_RUNTIME_RUNNER_TEMPLATE_OUT})%: build: install -m 0700 -d %{OUT} diff --git a/Dockerfile.controller b/Dockerfile.controller index 15e80ed559..7510ec7f03 100644 --- a/Dockerfile.controller +++ b/Dockerfile.controller @@ -10,7 +10,7 @@ WORKDIR /src # Seed some of the most common tools - this will be cached RUN go version -RUN mvn -B --version +RUN mvn -f kotlin-runtime/ftl-runtime -B --version # Download Go dependencies separately so Docker will cache them COPY go.mod go.sum ./ diff --git a/Dockerfile.runner b/Dockerfile.runner index 39d0f99441..603bfabd5f 100644 --- a/Dockerfile.runner +++ b/Dockerfile.runner @@ -12,7 +12,7 @@ RUN hermit install openjre-18.0.2.1_1 RUN hermit uninstall openjre RUN hermit install jbr RUN go version -RUN mvn -B --version +RUN mvn -f kotlin-runtime/ftl-runtime -B --version WORKDIR /src diff --git a/kotlin-runtime/ftl-runtime/pom.xml b/kotlin-runtime/ftl-runtime/pom.xml index 284fac3d65..88767e69d9 100644 --- a/kotlin-runtime/ftl-runtime/pom.xml +++ b/kotlin-runtime/ftl-runtime/pom.xml @@ -1,27 +1,78 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - - xyz.block - ftl - 1.0-SNAPSHOT - ../../pom.xml - - + xyz.block ftl-runtime jar + 1.0-SNAPSHOT + FTL + Towards a 𝝺-calculus for large-scale systems + https://github.com/TBD54566975/ftl + + + + The Apache License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + + - ${project.groupId}:${project.artifactId} + + + Alec Thomas + TBD + https://github.com/TBD54566975 + + + Wes Billman + TBD + https://github.com/TBD54566975 + + + Elizabeth Worstell + TBD + https://github.com/TBD54566975 + + + Matt Toohey + TBD + https://github.com/TBD54566975 + + + + + scm:git:git://github.com/TBD54566975/ftl.git + scm:git:ssh://github.com/TBD54566975/ftl.git + https://github.com/TBD54566975/ftl/tree/main + ${basedir}/../.. false 1.23.5 + 17 + 1.9.23 + false + 4.9.7 + 1.62.2 + 1.5.3 + 5.10.2 + 7.4 + + + + org.junit + junit-bom + ${junit.version} + pom + import + + + org.jetbrains.kotlin @@ -52,46 +103,59 @@ com.squareup.wire wire-runtime-jvm + ${wire.version} com.squareup.wire wire-grpc-server + ${wire.version} com.squareup.wire wire-grpc-client-jvm + ${wire.version} org.jetbrains.kotlin kotlin-stdlib + ${kotlin.version} + net.logstash.logback logstash-logback-encoder + ${logstash.version} ch.qos.logback logback-classic + ${logback.version} ch.qos.logback logback-core + ${logback.version} + io.grpc grpc-netty + ${grpc.version} io.grpc grpc-protobuf + ${grpc.version} io.grpc grpc-stub + ${grpc.version} org.hotswapagent hotswap-agent-core + 1.4.1 @@ -101,10 +165,26 @@ ${detekt.version} test + + org.jetbrains.kotlin + kotlin-test-junit5 + ${kotlin.version} + test + org.junit.jupiter junit-jupiter + + org.junit.jupiter + junit-jupiter-engine + test + + + org.junit.jupiter + junit-jupiter-params + test + org.junit-pioneer junit-pioneer @@ -120,6 +200,170 @@ + + + + org.codehaus.mojo + build-helper-maven-plugin + 3.5.0 + + + generate-sources + + add-source + + + + ${project.basedir}/target/generated-sources/wire + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.2.5 + + + Test* + *Test + + + --add-opens java.base/java.util=ALL-UNNAMED + --add-opens java.base/java.lang=ALL-UNNAMED + + + + + kotlin-maven-plugin + org.jetbrains.kotlin + ${kotlin.version} + + + compile + + compile + + + + ${project.basedir}/src/main/kotlin + + + + + test-compile + + test-compile + + + + ${project.basedir}/src/test/kotlin + + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 3.6.1 + + + initialize + + copy + + + + + com.squareup.wire + wire-compiler + ${wire.version} + jar-with-dependencies + wire-compiler.jar + + + + + + + + + org.codehaus.mojo + exec-maven-plugin + 3.2.0 + + + wire-client + initialize + + exec + + + java + + -jar + target/dependency/wire-compiler.jar + --proto_path=${rootDir}/backend/protos + + --kotlin_out=${project.build.directory}/generated-sources/wire + + --kotlin_rpc_role=client + + + + + wire-server + initialize + + exec + + + java + + -jar + target/dependency/wire-compiler.jar + --proto_path=${rootDir}/backend/protos + --kotlin_out=target/generated-sources/wire + --kotlin_rpc_role=server + --kotlin_rpc_call_style=blocking + --kotlin_grpc_server_compatible + --includes=xyz.block.ftl.v1.VerbService + + + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.5.2 + + + org.codehaus.mojo + flatten-maven-plugin + 1.6.0 + + + flatten + process-resources + + flatten + + + + flatten.clean + clean + + clean + + + + + + org.codehaus.mojo @@ -146,11 +390,117 @@ org.apache.maven.plugins maven-compiler-plugin + 3.12.1 - 11 - 11 + ${java.version} + ${java.version} + + + default-compile + none + + + + + + + release + + + + org.codehaus.mojo + flatten-maven-plugin + + ossrh + true + + + + org.apache.maven.plugins + maven-source-plugin + 3.3.0 + + + attach-sources + package + + jar-no-fork + + + + + + org.jetbrains.dokka + dokka-maven-plugin + 1.9.20 + + + attach-javadoc + package + + javadocJar + + + + + + ${project.basedir}/src/main/kotlin + + ${project.build.directory} + + + + org.apache.maven.plugins + maven-gpg-plugin + 3.1.0 + + + sign-artifacts + verify + + sign + + + + --pinentry-mode + loopback + --keyserver + hkp://keys.openpgp.org/ + + + + + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.13 + true + + ${maven.deploy.skip} + ossrh + https://s01.oss.sonatype.org/ + true + 10 + + + + + + + + ossrh + https://s01.oss.sonatype.org/content/repositories/snapshots + + + ossrh + https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml deleted file mode 100644 index c5bef3a7d0..0000000000 --- a/pom.xml +++ /dev/null @@ -1,441 +0,0 @@ - - - 4.0.0 - - xyz.block - ftl - 1.0-SNAPSHOT - pom - - FTL - Towards a 𝝺-calculus for large-scale systems - https://github.com/TBD54566975/ftl - - - - The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - - - - - - Alec Thomas - TBD - https://github.com/TBD54566975 - - - Wes Billman - TBD - https://github.com/TBD54566975 - - - Elizabeth Worstell - TBD - https://github.com/TBD54566975 - - - - - scm:git:git://github.com/TBD54566975/ftl.git - scm:git:ssh://github.com/TBD54566975/ftl.git - https://github.com/TBD54566975/ftl/tree/main - - - - kotlin-runtime/ftl-runtime - - - - true - ${basedir} - 1.8 - 1.9.23 - false - 4.9.7 - 1.62.2 - 1.5.3 - 5.10.2 - 7.4 - - - - - - org.junit - junit-bom - ${junit.version} - pom - import - - - com.squareup.wire - wire-runtime-jvm - ${wire.version} - - - com.squareup.wire - wire-grpc-server - ${wire.version} - - - com.squareup.wire - wire-grpc-client-jvm - ${wire.version} - - - org.jetbrains.kotlin - kotlin-stdlib - ${kotlin.version} - - - - - net.logstash.logback - logstash-logback-encoder - ${logstash.version} - - - ch.qos.logback - logback-classic - ${logback.version} - - - ch.qos.logback - logback-core - ${logback.version} - - - - io.grpc - grpc-netty - ${grpc.version} - - - io.grpc - grpc-protobuf - ${grpc.version} - - - io.grpc - grpc-stub - ${grpc.version} - - - org.hotswapagent - hotswap-agent-core - 1.4.1 - - - - - - - - org.junit.jupiter - junit-jupiter-engine - test - - - org.jetbrains.kotlin - kotlin-test-junit5 - ${kotlin.version} - test - - - org.junit.jupiter - junit-jupiter-params - test - - - org.junit-pioneer - junit-pioneer - 2.2.0 - test - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.12.1 - - - default-compile - none - - - - - - - - org.codehaus.mojo - build-helper-maven-plugin - 3.5.0 - - - generate-sources - - add-source - - - - ${project.basedir}/target/generated-sources/wire - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - 3.2.5 - - - Test* - *Test - - - --add-opens java.base/java.util=ALL-UNNAMED - --add-opens java.base/java.lang=ALL-UNNAMED - - - - - kotlin-maven-plugin - org.jetbrains.kotlin - ${kotlin.version} - - - compile - - compile - - - - ${project.basedir}/src/main/kotlin - - - - - test-compile - - test-compile - - - - ${project.basedir}/src/test/kotlin - - - - - - - - org.apache.maven.plugins - maven-dependency-plugin - 3.6.1 - - - initialize - - copy - - - - - com.squareup.wire - wire-compiler - ${wire.version} - jar-with-dependencies - wire-compiler.jar - - - - - - - - - org.codehaus.mojo - exec-maven-plugin - 3.2.0 - - - wire-client - initialize - - exec - - - java - - -jar - target/dependency/wire-compiler.jar - --proto_path=${rootDir}/backend/protos - - --kotlin_out=${project.build.directory}/generated-sources/wire - - --kotlin_rpc_role=client - - - - - wire-server - initialize - - exec - - - java - - -jar - target/dependency/wire-compiler.jar - --proto_path=${rootDir}/backend/protos - --kotlin_out=target/generated-sources/wire - --kotlin_rpc_role=server - --kotlin_rpc_call_style=blocking - --kotlin_grpc_server_compatible - --includes=xyz.block.ftl.v1.VerbService - - - - - - - org.apache.maven.plugins - maven-shade-plugin - 3.5.2 - - - org.codehaus.mojo - flatten-maven-plugin - 1.6.0 - - - flatten - process-resources - - flatten - - - - flatten.clean - clean - - clean - - - - - - - - - - - - release - - kotlin-runtime/ftl-runtime - - - - - org.codehaus.mojo - flatten-maven-plugin - - ossrh - true - - - - org.apache.maven.plugins - maven-source-plugin - 3.3.0 - - - attach-sources - package - - jar-no-fork - - - - - - org.jetbrains.dokka - dokka-maven-plugin - 1.9.20 - - - attach-javadoc - package - - javadocJar - - - - - - ${project.basedir}/src/main/kotlin - - ${project.build.directory} - - - - org.apache.maven.plugins - maven-gpg-plugin - 3.1.0 - - - sign-artifacts - verify - - sign - - - - --pinentry-mode - loopback - --keyserver - hkp://keys.openpgp.org/ - - - - - - - org.sonatype.plugins - nexus-staging-maven-plugin - 1.6.13 - true - - ${maven.deploy.skip} - ossrh - https://s01.oss.sonatype.org/ - true - 10 - - - - - - - - ossrh - https://s01.oss.sonatype.org/content/repositories/snapshots - - - ossrh - https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ - - - - - \ No newline at end of file