diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
new file mode 100644
index 0000000..42f40bf
--- /dev/null
+++ b/.github/workflows/maven.yml
@@ -0,0 +1,145 @@
+name: Java CI with Maven
+
+on:
+ push:
+ branches:
+ - develop
+
+ pull_request:
+ branches:
+ - develop
+
+ schedule:
+ - cron: '0 6 * * 1-5'
+
+ workflow_dispatch:
+
+concurrency: izgw-transform-sql-dev
+
+permissions:
+ contents: write
+ packages: write
+
+jobs:
+ build:
+
+ runs-on: ubuntu-latest
+
+ steps:
+
+ - name: Checkout the software
+ uses: actions/checkout@v6
+
+ - name: Set up JDK 21
+ uses: actions/setup-java@v5
+ with:
+ java-version: '21'
+ distribution: 'temurin'
+ cache: maven
+
+ - name: Set up Maven
+ uses: stCarolas/setup-maven@v5.1
+ with:
+ maven-version: 3.9.0
+
+ - name: Set up Toolchain
+ shell: bash
+ run: |
+ mkdir -p ~/.m2 \
+ && cat << EOF > ~/.m2/toolchains.xml
+
+
+
+ jdk
+
+ 21
+ sun
+
+
+ $JAVA_HOME_21_X64
+
+
+
+ EOF
+
+ cat << EOF > ~/.m2/settings.xml
+
+
+
+
+ github
+ ${{github.actor}}
+ ${{ secrets.GITHUB_TOKEN }}
+
+
+ github-bom
+ ${{github.actor}}
+ ${{ secrets.GITHUB_TOKEN }}
+
+
+ github-core
+ ${{github.actor}}
+ ${{ secrets.GITHUB_TOKEN }}
+
+
+
+ EOF
+
+ echo BASE_TAG=`mvn help:evaluate -Dexpression=project.version -q -DforceStdout` >> $GITHUB_ENV
+ echo COMPUTERNAME=`hostname` >> $GITHUB_ENV
+
+ - name: Sets env vars for push or pull request to develop
+ run: |
+ echo IMAGE_TAG=`mvn help:evaluate -Dexpression=project.version -q -DforceStdout | sed "s/-SNAPSHOT$/-SNAPSHOT-${{github.run_number}}/"` >> $GITHUB_ENV
+ echo DO_REVISION_CHECK=true >> $GITHUB_ENV
+ echo SKIP_DEPENDENCY_CHECK=true >> $GITHUB_ENV
+
+ - name: Sets env vars for pull to main
+ if: ${{ github.base_ref == 'main' }}
+ run: |
+ IMAGE_TAG=`mvn help:evaluate -Dexpression=project.version -q -DforceStdout | sed "s/-.*$/-IZGW-SNAPSHOT-${{github.run_number}}/"`
+ echo IMAGE_TAG=$IMAGE_TAG >> $GITHUB_ENV
+ echo DO_REVISION_CHECK=false >> $GITHUB_ENV
+ echo SKIP_DEPENDENCY_CHECK=true >> $GITHUB_ENV
+
+ - name: Sets env vars for push to main
+ if: ${{ github.ref_name == 'main' }}
+ run: |
+ IMAGE_TAG=`mvn help:evaluate -Dexpression=project.version -q -DforceStdout | sed "s/-.*$/-IZGW-RELEASE-${{github.run_number}}/"`
+ echo IMAGE_TAG=$IMAGE_TAG >> $GITHUB_ENV
+ echo DO_REVISION_CHECK=false >> $GITHUB_ENV
+ echo SKIP_DEPENDENCY_CHECK=false >> $GITHUB_ENV
+
+ - name: List env
+ shell: bash
+ run: |
+ echo BASE_REF: ${{ github.base_ref }}
+ echo HEAD_REF: ${{ github.head_ref }}
+ echo REF_NAME: ${{ github.ref_name }}
+ echo REF: ${{ github.ref }}
+ echo EVENT_NAME ${{ github.event_name }}
+ echo TAG: $BASE_TAG
+ echo DO_REVISION_CHECK: $DO_REVISION_CHECK
+ echo SKIP_DEPENDENCY_CHECK: $SKIP_DEPENDENCY_CHECK
+ echo IMAGE_TAG: $IMAGE_TAG
+
+ - name: Maven Build, Test, and Deploy
+ run: |
+ mvn -B -U clean package deploy \
+ -Dbuildno=${{github.run_number}} \
+ -DdoRevisionCheck=${{env.DO_REVISION_CHECK}} \
+ -DskipDependencyCheck=${{env.SKIP_DEPENDENCY_CHECK}}
+
+ - name: Upload build environment on failure
+ uses: actions/upload-artifact@v7
+ if: ${{ failure() }}
+ with:
+ name: build-failure
+ path: .
+
+ - name: Upload dependency check report
+ uses: actions/upload-artifact@v7
+ if: ${{ ! env.SKIP_DEPENDENCY_CHECK }}
+ with:
+ name: DependencyCheck
+ path: ./target/site/dependency-check-report.html
diff --git a/README.md b/README.md
index 6e82edd..a31b285 100644
--- a/README.md
+++ b/README.md
@@ -8,14 +8,23 @@ backends alongside the existing IZ Gateway path.
## Building
-This module is not built standalone. It is included as a profile-activated
-dependency in `izgw-transform`:
+```cmd
+mvn clean package
+mvn test
+mvn dependency-check:check
+```
+
+This module builds as a library JAR and publishes to GitHub Packages. It does
+not produce a runnable service image on its own.
+
+To produce a SQL-enabled `izgw-transform` service image, activate the
+`sql-support` profile and a driver profile in `izgw-transform`:
```
mvn package -P sql-support,sql-mssql
```
-See `izgw-transform` for full build and deployment documentation.
+See `izgw-transform` for full service build and deployment documentation.
## Documentation
diff --git a/pom.xml b/pom.xml
index ad8893c..c480d5e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,17 +18,68 @@
21
UTF-8
+ ${maven.build.timestamp}
+ yyyyMMddHHmm
+ ${project.artifactId}-${project.version}-${timestamp}
+ ${timestamp}
+
+
+ central
+ Maven Central Repository
+ https://repo.maven.apache.org/maven2
+ true
+ false
+
+
+ github-bom
+ GitHub Packages
+ https://maven.pkg.github.com/IZGateway/izgw-bom
+ true
+ true
+
+
+ github-core
+ izgw-core
+ https://maven.pkg.github.com/izgateway/izgw-core
+ true
+ true
+
+
+
+
+
+ github
+ GitHub IZGateway Apache Maven Packages
+ https://maven.pkg.github.com/IZGateway/izgw-transform-sql
+
+
+
- gov.cdc.izgateway
+ gov.cdc.izgw
izgw-core
+ 3.2.0-SNAPSHOT
org.springframework.boot
spring-boot-starter-jdbc
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.projectlombok
+ lombok
+ provided
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+