diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 640bfdb79..060be9d3c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,7 +22,7 @@ jobs: - uses: DeterminateSystems/magic-nix-cache-action@v13 - name: Main project tests - run: nix develop .#jdk${{ matrix.java }} --command gradle test --no-daemon + run: nix develop .#jdk${{ matrix.java }} --command mvn --batch-mode test docker_test: runs-on: ubuntu-latest @@ -62,6 +62,7 @@ jobs: - uses: DeterminateSystems/magic-nix-cache-action@v13 + - run: nix develop --command mvn --batch-mode -DskipTests install - run: nix develop --command bazelisk build //... --//scip-javac:enabled=true - run: nix develop --command bazelisk run scip-aggregator:bazel -- --sourceroot "$PWD" - run: du -h index.scip @@ -83,8 +84,8 @@ jobs: - uses: DeterminateSystems/magic-nix-cache-action@v13 - - run: nix develop --command gradle :scip-java:installDist --no-daemon - - run: echo "$PWD/scip-java/build/install/scip-java/bin" >> "$GITHUB_PATH" + - run: nix develop --command mvn --batch-mode -DskipTests install + - run: echo "$PWD/scip-java/target/install/scip-java/bin" >> "$GITHUB_PATH" - name: Auto-index scip-java codebase run: | # shellcheck disable=SC2016 @@ -113,10 +114,10 @@ jobs: - uses: DeterminateSystems/magic-nix-cache-action@v13 - name: scip-kotlinc tests - run: nix develop --command gradle :scip-kotlinc:test --no-daemon + run: nix develop --command mvn --batch-mode -pl scip-kotlinc -am test - name: Regenerate snapshots - run: nix develop --command gradle :scip-snapshots:saveSnapshots --no-daemon + run: nix develop --command mvn --batch-mode -pl scip-snapshots -am -DskipTests -PsaveSnapshots verify - name: Check snapshot drift run: | @@ -141,13 +142,13 @@ jobs: - run: | nix develop .#jdk${{ matrix.java }} --command \ - gradle --no-daemon :scip-java:installDist publishToMavenLocal + mvn --batch-mode -DskipTests install SCIP_JAVA_VERSION="$( - sed -n 's/^version:=//p' scip-java/build/install/scip-java/VERSION + sed -n 's/^version:=//p' scip-java/target/install/scip-java/VERSION )" test -n "$SCIP_JAVA_VERSION" printf 'SCIP_JAVA_VERSION=%s\n' "$SCIP_JAVA_VERSION" >> "$GITHUB_ENV" - printf 'SCIP_JAVA_CLI=%s\n' "$PWD/scip-java/build/install/scip-java/bin/scip-java" >> "$GITHUB_ENV" + printf 'SCIP_JAVA_CLI=%s\n' "$PWD/scip-java/target/install/scip-java/bin/scip-java" >> "$GITHUB_ENV" - run: | nix develop "$GITHUB_WORKSPACE#jdk${{ matrix.java }}" --command \ diff --git a/.gitignore b/.gitignore index ce6f3c1a3..80b9cda0f 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ build/ .lib/ dist/* target/ +.flattened-pom.xml lib_managed/ src_managed/ .bloop diff --git a/BUILD.bazel b/BUILD.bazel new file mode 100644 index 000000000..fc98c1c9a --- /dev/null +++ b/BUILD.bazel @@ -0,0 +1 @@ +# Root Bazel package for the rules_jvm_external Maven lock file. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 20b6d5f27..6903718bf 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -14,17 +14,18 @@ nix develop .#jdk17 # JDK 17 nix develop .#jdk21 # JDK 21 ``` -This drops you into a shell with `gradle`, `maven`, `bazelisk`, `nodejs`, +This drops you into a shell with `maven`, `gradle`, `bazelisk`, `nodejs`, `yarn`, `git`, `jq`, etc. all pinned to the versions used in CI. If you'd rather install tools manually, you'll need at least: - `java`: any version should work - `git`: any version should work -- `gradle`: `brew install gradle`, or see - [general installation guide](https://gradle.org/install/). - `mvn`: `brew install maven`, or see [general installation guide](https://www.baeldung.com/install-maven-on-windows-linux-mac). +- `gradle`: `brew install gradle`, or see + [general installation guide](https://gradle.org/install/). The project build + is Maven-based, but the CLI integration tests still exercise Gradle projects. ## Project structure @@ -43,21 +44,22 @@ These are the main components of the project. interface. - `scip-java/src/test`: build-tool integration tests and fixtures for the `scip-java` command-line interface. -- `settings.gradle.kts`: Gradle project layout. -- `build.gradle.kts`: Gradle build definition. -- `gradle/libs.versions.toml`: dependency and plugin versions. +- `pom.xml`: Maven reactor, dependency versions, and shared plugin setup. +- `*/pom.xml`: Maven module build definitions. +- `build.gradle.kts`, `settings.gradle.kts`, `gradle/libs.versions.toml`: legacy + Gradle build files kept during the Maven migration experiment. ## Helpful commands | Command | Where | Description | | ------------------------------------------------------- | -------- | ----------------------------------------------------------------------- | -| `gradle test --no-daemon` | terminal | Run all Gradle tests. | -| `gradle :scip-java:test --no-daemon` | terminal | Run CLI build-tool integration tests (Gradle, Maven, SCIP config). | -| `gradle :scip-kotlinc:test --no-daemon` | terminal | Run Kotlin compiler-plugin tests. | -| `gradle :scip-snapshots:test --no-daemon` | terminal | Compare Java and Kotlin snapshot goldens. | -| `gradle :scip-snapshots:saveSnapshots --no-daemon` | terminal | Regenerate Java and Kotlin snapshot goldens. | -| `gradle :scip-java:installDist --no-daemon` | terminal | Build a local `scip-java` distribution under `scip-java/build/install/`. | -| `gradle :scip-java:run --args='--cwd DIRECTORY'` | terminal | Run `scip-java` against a given Gradle/Maven build. | +| `mvn --batch-mode test` | terminal | Run all Maven reactor tests. | +| `mvn --batch-mode -pl scip-java -am test` | terminal | Run CLI build-tool integration tests (Gradle, Maven, SCIP config). | +| `mvn --batch-mode -pl scip-kotlinc -am test` | terminal | Run Kotlin compiler-plugin tests. | +| `mvn --batch-mode -pl scip-snapshots -am test` | terminal | Compare Java and Kotlin snapshot goldens. | +| `mvn --batch-mode -pl scip-snapshots -am -DskipTests -PsaveSnapshots verify` | terminal | Regenerate Java and Kotlin snapshot goldens. | +| `mvn --batch-mode -pl scip-java -am -DskipTests package` | terminal | Build a local `scip-java` distribution under `scip-java/target/install/`. | +| `scip-java/target/install/scip-java/bin/scip-java --cwd DIRECTORY index` | terminal | Run `scip-java` against a given Gradle/Maven build after packaging. | | `google-java-format --replace $(git ls-files '*.java')` | terminal | Format Java sources (from `nix develop`). Enforced by `nix flake check`. | | `ktfmt --kotlinlang-style $(git ls-files '*.kt')` | terminal | Format Kotlin sources (from `nix develop`). Enforced by `nix flake check`. | @@ -78,15 +80,15 @@ Next, follow [these instructions](https://github.com/HPI-Information-Systems/Metanome/wiki/Installing-the-google-styleguide-settings-in-intellij-and-eclipse) here to configure the Google Java formatter. -Finally, run "File > Project From Existing Sources" to import the Gradle build -into IntelliJ. Select the "Gradle" option if it asks you to choose a build +Finally, run "File > Project From Existing Sources" to import the Maven build +into IntelliJ. Select the "Maven" option if it asks you to choose a build model. -It's best to run tests from Gradle, not from the IntelliJ UI. +It's best to run tests from Maven, not from the IntelliJ UI. ## Tests are written in Java with JUnit 5 -The Java tests use [JUnit 5](https://junit.org/junit5/) through Gradle's JUnit +The Java tests use [JUnit 5](https://junit.org/junit5/) through Maven Surefire's Platform support. The snapshot suite is a JUnit `@TestFactory` that emits one dynamic test per generated document, comparing it against the committed goldens under `scip-snapshots/expected`. Build-tool tests (`scip-java/src/test`) are diff --git a/Dockerfile b/Dockerfile index 45ae2c6b6..b10094654 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,7 +17,7 @@ RUN git config --global --add safe.directory * COPY . . -RUN gradle --no-daemon :scip-java:installDist && mkdir -p /app/scip-java && cp -R scip-java/build/install/scip-java/. /app/scip-java/ +RUN mvn --batch-mode -pl scip-java -am -DskipTests package && mkdir -p /app/scip-java && cp -R scip-java/target/install/scip-java/. /app/scip-java/ COPY ./bin/scip-java-docker-script.sh /usr/bin/scip-java diff --git a/MODULE.bazel b/MODULE.bazel index 15e6ff88e..5c2b942b9 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -13,6 +13,24 @@ maven.install( "org.scip-code:scip-java-bindings:0.8.0", ], known_contributing_modules = ["protobuf"], - repositories = ["https://repo1.maven.org/maven2"], + repositories = [ + "https://repo1.maven.org/maven2", + ], + lock_file = "//:maven_install.json", +) + +# Keep changing in-repo tool artifacts unpinned: `mvn install` populates m2Local +# before Bazel runs, avoiding duplicate Bazel-side build rules for these jars. +maven.install( + name = "local_maven", + artifacts = [ + "com.sourcegraph:scip-aggregator:0.0.0-SNAPSHOT", + "com.sourcegraph:scip-javac:jar:all:0.0.0-SNAPSHOT", + ], + fail_on_missing_checksum = False, + repositories = [ + "m2Local", + "https://repo1.maven.org/maven2", + ], ) -use_repo(maven, "maven") +use_repo(maven, "maven", "local_maven") diff --git a/examples/bazel-example/MODULE.bazel b/examples/bazel-example/MODULE.bazel index 8b5427860..cea56b6a0 100644 --- a/examples/bazel-example/MODULE.bazel +++ b/examples/bazel-example/MODULE.bazel @@ -24,4 +24,16 @@ maven.install( ], repositories = ["https://repo1.maven.org/maven2"], ) -use_repo(maven, "maven") + +# This source-checkout example consumes scip-java's SNAPSHOT tool jars from +# m2Local. Run `mvn -DskipTests install` at the repository root first. +maven.install( + name = "local_maven", + fail_on_missing_checksum = False, + known_contributing_modules = ["scip_java"], + repositories = [ + "m2Local", + "https://repo1.maven.org/maven2", + ], +) +use_repo(maven, "maven", "local_maven") diff --git a/maven_install.json b/maven_install.json new file mode 100644 index 000000000..d93dfa7d7 --- /dev/null +++ b/maven_install.json @@ -0,0 +1,386 @@ +{ + "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL", + "__INPUT_ARTIFACTS_HASH": { + "com.google.code.findbugs:jsr305": 495355163, + "com.google.code.gson:gson": 597770368, + "com.google.errorprone:error_prone_annotations": -1035138750, + "com.google.guava:guava": 1943808618, + "com.google.j2objc:j2objc-annotations": 2003271689, + "com.google.protobuf:protobuf-java-util": 191882783, + "org.projectlombok:lombok": -845595129, + "org.scip-code:scip-java-bindings": 1938462494, + "repositories": -1949687017 + }, + "__RESOLVED_ARTIFACTS_HASH": { + "com.google.code.findbugs:jsr305": 870839855, + "com.google.code.gson:gson": -1575757252, + "com.google.errorprone:error_prone_annotations": 833623751, + "com.google.guava:failureaccess": -1890754729, + "com.google.guava:guava": -163533230, + "com.google.guava:listenablefuture": 1079558157, + "com.google.j2objc:j2objc-annotations": 248818742, + "com.google.protobuf:protobuf-java": -572820424, + "com.google.protobuf:protobuf-java-util": -1205947984, + "org.checkerframework:checker-qual": -1533199059, + "org.projectlombok:lombok": -861688038, + "org.scip-code:scip-java-bindings": -1084642134 + }, + "conflict_resolution": { + "com.google.errorprone:error_prone_annotations:2.5.1": "com.google.errorprone:error_prone_annotations:2.18.0" + }, + "artifacts": { + "com.google.code.findbugs:jsr305": { + "shasums": { + "jar": "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7" + }, + "version": "3.0.2" + }, + "com.google.code.gson:gson": { + "shasums": { + "jar": "d3999291855de495c94c743761b8ab5176cfeabe281a5ab0d8e8d45326fd703e" + }, + "version": "2.8.9" + }, + "com.google.errorprone:error_prone_annotations": { + "shasums": { + "jar": "9e6814cb71816988a4fd1b07a993a8f21bb7058d522c162b1de849e19bea54ae" + }, + "version": "2.18.0" + }, + "com.google.guava:failureaccess": { + "shasums": { + "jar": "a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26" + }, + "version": "1.0.1" + }, + "com.google.guava:guava": { + "shasums": { + "jar": "bd7fa227591fb8509677d0d1122cf95158f3b8a9f45653f58281d879f6dc48c5" + }, + "version": "32.0.1-jre" + }, + "com.google.guava:listenablefuture": { + "shasums": { + "jar": "b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99" + }, + "version": "9999.0-empty-to-avoid-conflict-with-guava" + }, + "com.google.j2objc:j2objc-annotations": { + "shasums": { + "jar": "f02a95fa1a5e95edb3ed859fd0fb7df709d121a35290eff8b74dce2ab7f4d6ed" + }, + "version": "2.8" + }, + "com.google.protobuf:protobuf-java": { + "shasums": { + "jar": "780e269712d59ae34b87b702ce26aede7982804299dd56a65aa84bda6c145268" + }, + "version": "4.34.2" + }, + "com.google.protobuf:protobuf-java-util": { + "shasums": { + "jar": "a1464cbd83cdcc28dd648bc50b9f1e365aff4308a6481aae2aa9a2a777d6b0d5" + }, + "version": "4.34.2" + }, + "org.checkerframework:checker-qual": { + "shasums": { + "jar": "e316255bbfcd9fe50d165314b85abb2b33cb2a66a93c491db648e498a82c2de1" + }, + "version": "3.33.0" + }, + "org.projectlombok:lombok": { + "shasums": { + "jar": "ecef1581411d7a82cc04281667ee0bac5d7c0a5aae74cfc38430396c91c31831" + }, + "version": "1.18.22" + }, + "org.scip-code:scip-java-bindings": { + "shasums": { + "jar": "f022d8129f79ef443bb842b5248d01956157ec5ef6dbe8d8e091d493caa5cfba" + }, + "version": "0.8.0" + } + }, + "dependencies": { + "com.google.guava:guava": [ + "com.google.code.findbugs:jsr305", + "com.google.errorprone:error_prone_annotations", + "com.google.guava:failureaccess", + "com.google.guava:listenablefuture", + "com.google.j2objc:j2objc-annotations", + "org.checkerframework:checker-qual" + ], + "com.google.protobuf:protobuf-java-util": [ + "com.google.code.findbugs:jsr305", + "com.google.code.gson:gson", + "com.google.errorprone:error_prone_annotations", + "com.google.protobuf:protobuf-java" + ], + "org.scip-code:scip-java-bindings": [ + "com.google.protobuf:protobuf-java" + ] + }, + "packages": { + "com.google.code.findbugs:jsr305": [ + "javax.annotation", + "javax.annotation.concurrent", + "javax.annotation.meta" + ], + "com.google.code.gson:gson": [ + "com.google.gson", + "com.google.gson.annotations", + "com.google.gson.internal", + "com.google.gson.internal.bind", + "com.google.gson.internal.bind.util", + "com.google.gson.internal.reflect", + "com.google.gson.internal.sql", + "com.google.gson.reflect", + "com.google.gson.stream" + ], + "com.google.errorprone:error_prone_annotations": [ + "com.google.errorprone.annotations", + "com.google.errorprone.annotations.concurrent" + ], + "com.google.guava:failureaccess": [ + "com.google.common.util.concurrent.internal" + ], + "com.google.guava:guava": [ + "com.google.common.annotations", + "com.google.common.base", + "com.google.common.base.internal", + "com.google.common.cache", + "com.google.common.collect", + "com.google.common.escape", + "com.google.common.eventbus", + "com.google.common.graph", + "com.google.common.hash", + "com.google.common.html", + "com.google.common.io", + "com.google.common.math", + "com.google.common.net", + "com.google.common.primitives", + "com.google.common.reflect", + "com.google.common.util.concurrent", + "com.google.common.xml", + "com.google.thirdparty.publicsuffix" + ], + "com.google.j2objc:j2objc-annotations": [ + "com.google.j2objc.annotations" + ], + "com.google.protobuf:protobuf-java": [ + "com.google.protobuf", + "com.google.protobuf.compiler" + ], + "com.google.protobuf:protobuf-java-util": [ + "com.google.protobuf.util" + ], + "org.checkerframework:checker-qual": [ + "org.checkerframework.checker.builder.qual", + "org.checkerframework.checker.calledmethods.qual", + "org.checkerframework.checker.compilermsgs.qual", + "org.checkerframework.checker.fenum.qual", + "org.checkerframework.checker.formatter.qual", + "org.checkerframework.checker.guieffect.qual", + "org.checkerframework.checker.i18n.qual", + "org.checkerframework.checker.i18nformatter.qual", + "org.checkerframework.checker.index.qual", + "org.checkerframework.checker.initialization.qual", + "org.checkerframework.checker.interning.qual", + "org.checkerframework.checker.lock.qual", + "org.checkerframework.checker.mustcall.qual", + "org.checkerframework.checker.nullness.qual", + "org.checkerframework.checker.optional.qual", + "org.checkerframework.checker.propkey.qual", + "org.checkerframework.checker.regex.qual", + "org.checkerframework.checker.signature.qual", + "org.checkerframework.checker.signedness.qual", + "org.checkerframework.checker.tainting.qual", + "org.checkerframework.checker.units.qual", + "org.checkerframework.common.aliasing.qual", + "org.checkerframework.common.initializedfields.qual", + "org.checkerframework.common.reflection.qual", + "org.checkerframework.common.returnsreceiver.qual", + "org.checkerframework.common.subtyping.qual", + "org.checkerframework.common.util.report.qual", + "org.checkerframework.common.value.qual", + "org.checkerframework.dataflow.qual", + "org.checkerframework.framework.qual" + ], + "org.projectlombok:lombok": [ + "lombok", + "lombok.delombok.ant", + "lombok.experimental", + "lombok.extern.apachecommons", + "lombok.extern.flogger", + "lombok.extern.jackson", + "lombok.extern.java", + "lombok.extern.jbosslog", + "lombok.extern.log4j", + "lombok.extern.slf4j", + "lombok.javac.apt", + "lombok.launch" + ], + "org.scip-code:scip-java-bindings": [ + "org.scip_code.scip" + ] + }, + "repositories": { + "https://repo1.maven.org/maven2/": [ + "com.google.code.findbugs:jsr305", + "com.google.code.gson:gson", + "com.google.errorprone:error_prone_annotations", + "com.google.guava:failureaccess", + "com.google.guava:guava", + "com.google.guava:listenablefuture", + "com.google.j2objc:j2objc-annotations", + "com.google.protobuf:protobuf-java", + "com.google.protobuf:protobuf-java-util", + "org.checkerframework:checker-qual", + "org.projectlombok:lombok", + "org.scip-code:scip-java-bindings" + ] + }, + "services": { + "org.projectlombok:lombok": { + "javax.annotation.processing.Processor": [ + "lombok.launch.AnnotationProcessorHider$AnnotationProcessor", + "lombok.launch.AnnotationProcessorHider$ClaimingProcessor" + ], + "lombok.core.LombokApp": [ + "lombok.bytecode.PoolConstantsApp", + "lombok.bytecode.PostCompilerApp", + "lombok.core.Main$LicenseApp", + "lombok.core.Main$VersionApp", + "lombok.core.PublicApiCreatorApp", + "lombok.core.configuration.ConfigurationApp", + "lombok.core.runtimeDependencies.CreateLombokRuntimeApp", + "lombok.delombok.DelombokApp", + "lombok.installer.Installer$CommandLineInstallerApp", + "lombok.installer.Installer$CommandLineUninstallerApp", + "lombok.installer.Installer$GraphicalInstallerApp" + ], + "lombok.core.PostCompilerTransformation": [ + "lombok.bytecode.PreventNullAnalysisRemover", + "lombok.bytecode.SneakyThrowsRemover" + ], + "lombok.core.runtimeDependencies.RuntimeDependencyInfo": [ + "lombok.core.handlers.SneakyThrowsAndCleanupDependencyInfo" + ], + "lombok.eclipse.EclipseASTVisitor": [ + "lombok.eclipse.handlers.HandleFieldDefaults", + "lombok.eclipse.handlers.HandleVal" + ], + "lombok.eclipse.EclipseAnnotationHandler": [ + "lombok.eclipse.handlers.HandleAccessors", + "lombok.eclipse.handlers.HandleBuilder", + "lombok.eclipse.handlers.HandleBuilderDefault", + "lombok.eclipse.handlers.HandleCleanup", + "lombok.eclipse.handlers.HandleConstructor$HandleAllArgsConstructor", + "lombok.eclipse.handlers.HandleConstructor$HandleNoArgsConstructor", + "lombok.eclipse.handlers.HandleConstructor$HandleRequiredArgsConstructor", + "lombok.eclipse.handlers.HandleData", + "lombok.eclipse.handlers.HandleDelegate", + "lombok.eclipse.handlers.HandleEqualsAndHashCode", + "lombok.eclipse.handlers.HandleExtensionMethod", + "lombok.eclipse.handlers.HandleFieldNameConstants", + "lombok.eclipse.handlers.HandleGetter", + "lombok.eclipse.handlers.HandleHelper", + "lombok.eclipse.handlers.HandleJacksonized", + "lombok.eclipse.handlers.HandleLog$HandleCommonsLog", + "lombok.eclipse.handlers.HandleLog$HandleCustomLog", + "lombok.eclipse.handlers.HandleLog$HandleFloggerLog", + "lombok.eclipse.handlers.HandleLog$HandleJBossLog", + "lombok.eclipse.handlers.HandleLog$HandleJulLog", + "lombok.eclipse.handlers.HandleLog$HandleLog4j2Log", + "lombok.eclipse.handlers.HandleLog$HandleLog4jLog", + "lombok.eclipse.handlers.HandleLog$HandleSlf4jLog", + "lombok.eclipse.handlers.HandleLog$HandleXSlf4jLog", + "lombok.eclipse.handlers.HandleNonNull", + "lombok.eclipse.handlers.HandlePrintAST", + "lombok.eclipse.handlers.HandleSetter", + "lombok.eclipse.handlers.HandleSneakyThrows", + "lombok.eclipse.handlers.HandleStandardException", + "lombok.eclipse.handlers.HandleSuperBuilder", + "lombok.eclipse.handlers.HandleSynchronized", + "lombok.eclipse.handlers.HandleToString", + "lombok.eclipse.handlers.HandleUtilityClass", + "lombok.eclipse.handlers.HandleValue", + "lombok.eclipse.handlers.HandleWith", + "lombok.eclipse.handlers.HandleWithBy" + ], + "lombok.eclipse.handlers.EclipseSingularsRecipes$EclipseSingularizer": [ + "lombok.eclipse.handlers.singulars.EclipseGuavaMapSingularizer", + "lombok.eclipse.handlers.singulars.EclipseGuavaSetListSingularizer", + "lombok.eclipse.handlers.singulars.EclipseGuavaTableSingularizer", + "lombok.eclipse.handlers.singulars.EclipseJavaUtilListSingularizer", + "lombok.eclipse.handlers.singulars.EclipseJavaUtilMapSingularizer", + "lombok.eclipse.handlers.singulars.EclipseJavaUtilSetSingularizer" + ], + "lombok.installer.IdeLocationProvider": [ + "lombok.installer.eclipse.AngularIDELocationProvider", + "lombok.installer.eclipse.EclipseLocationProvider", + "lombok.installer.eclipse.JbdsLocationProvider", + "lombok.installer.eclipse.MyEclipseLocationProvider", + "lombok.installer.eclipse.RhcrLocationProvider", + "lombok.installer.eclipse.RhdsLocationProvider", + "lombok.installer.eclipse.STS4LocationProvider", + "lombok.installer.eclipse.STSLocationProvider" + ], + "lombok.javac.JavacASTVisitor": [ + "lombok.javac.handlers.HandleFieldDefaults", + "lombok.javac.handlers.HandleVal" + ], + "lombok.javac.JavacAnnotationHandler": [ + "lombok.javac.handlers.HandleAccessors", + "lombok.javac.handlers.HandleBuilder", + "lombok.javac.handlers.HandleBuilderDefault", + "lombok.javac.handlers.HandleBuilderDefaultRemove", + "lombok.javac.handlers.HandleBuilderRemove", + "lombok.javac.handlers.HandleCleanup", + "lombok.javac.handlers.HandleConstructor$HandleAllArgsConstructor", + "lombok.javac.handlers.HandleConstructor$HandleNoArgsConstructor", + "lombok.javac.handlers.HandleConstructor$HandleRequiredArgsConstructor", + "lombok.javac.handlers.HandleData", + "lombok.javac.handlers.HandleDelegate", + "lombok.javac.handlers.HandleEqualsAndHashCode", + "lombok.javac.handlers.HandleExtensionMethod", + "lombok.javac.handlers.HandleFieldNameConstants", + "lombok.javac.handlers.HandleGetter", + "lombok.javac.handlers.HandleHelper", + "lombok.javac.handlers.HandleJacksonized", + "lombok.javac.handlers.HandleLog$HandleCommonsLog", + "lombok.javac.handlers.HandleLog$HandleCustomLog", + "lombok.javac.handlers.HandleLog$HandleFloggerLog", + "lombok.javac.handlers.HandleLog$HandleJBossLog", + "lombok.javac.handlers.HandleLog$HandleJulLog", + "lombok.javac.handlers.HandleLog$HandleLog4j2Log", + "lombok.javac.handlers.HandleLog$HandleLog4jLog", + "lombok.javac.handlers.HandleLog$HandleSlf4jLog", + "lombok.javac.handlers.HandleLog$HandleXSlf4jLog", + "lombok.javac.handlers.HandleNonNull", + "lombok.javac.handlers.HandlePrintAST", + "lombok.javac.handlers.HandleSetter", + "lombok.javac.handlers.HandleSneakyThrows", + "lombok.javac.handlers.HandleStandardException", + "lombok.javac.handlers.HandleSuperBuilder", + "lombok.javac.handlers.HandleSuperBuilderRemove", + "lombok.javac.handlers.HandleSynchronized", + "lombok.javac.handlers.HandleToString", + "lombok.javac.handlers.HandleUtilityClass", + "lombok.javac.handlers.HandleValue", + "lombok.javac.handlers.HandleWith", + "lombok.javac.handlers.HandleWithBy" + ], + "lombok.javac.handlers.JavacSingularsRecipes$JavacSingularizer": [ + "lombok.javac.handlers.singulars.JavacGuavaMapSingularizer", + "lombok.javac.handlers.singulars.JavacGuavaSetListSingularizer", + "lombok.javac.handlers.singulars.JavacGuavaTableSingularizer", + "lombok.javac.handlers.singulars.JavacJavaUtilListSingularizer", + "lombok.javac.handlers.singulars.JavacJavaUtilMapSingularizer", + "lombok.javac.handlers.singulars.JavacJavaUtilSetSingularizer" + ] + } + }, + "version": "3" +} diff --git a/pom.xml b/pom.xml new file mode 100644 index 000000000..274c173fe --- /dev/null +++ b/pom.xml @@ -0,0 +1,372 @@ + + + 4.0.0 + + com.sourcegraph + scip-java-root + ${revision} + pom + + scip-java + Java and Kotlin indexer for SCIP + https://github.com/sourcegraph/scip-java + + + + Apache-2.0 + http://www.apache.org/licenses/LICENSE-2.0 + + + + + + sourcegraph + Sourcegraph + + + + + scm:git:https://github.com/sourcegraph/scip-java.git + scm:git:ssh://git@github.com/sourcegraph/scip-java.git + https://github.com/sourcegraph/scip-java + + + + scip-shared + scip-javac + scip-kotlinc + scip-aggregator + scip-maven-plugin + scip-gradle-plugin + scip-java + scip-snapshots/cases/java/common + scip-snapshots/cases/kotlin/common + scip-snapshots + + + + 0.0.0-SNAPSHOT + UTF-8 + UTF-8 + 11 + + 5.0.3 + 8.10 + 5.11.4 + 1.11.4 + 0.7.1 + 4.6.3 + 2.2.0 + 1.9.0 + 1.18.22 + 3.6.4 + 3.6.3 + 2.2.1 + 4.34.2 + 0.8.0 + + 2.1.0 + 3.5.0 + 1.6.0 + 3.1.0 + 3.13.0 + 3.8.1 + 3.1.3 + 3.4.2 + 3.15.1 + 3.3.1 + 3.6.0 + 3.5.3 + 0.6.1 + + --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED + false + + + + + + com.github.ajalt.clikt + clikt-jvm + ${clikt.version} + + + dev.gradleplugins + gradle-api + ${gradle.api.version} + + + dev.gradleplugins + gradle-test-kit + ${gradle.api.version} + + + org.junit.jupiter + junit-jupiter-api + ${junit.jupiter.version} + + + org.junit.jupiter + junit-jupiter-engine + ${junit.jupiter.version} + + + org.junit.platform + junit-platform-launcher + ${junit.platform.version} + + + dev.zacsweers.kctfork + core + ${kctfork.version} + + + io.kotest + kotest-assertions-core-jvm + ${kotest.version} + + + org.jetbrains.kotlin + kotlin-compiler-embeddable + ${kotlin.version} + + + org.jetbrains.kotlin + kotlin-reflect + ${kotlin.version} + + + org.jetbrains.kotlin + kotlin-scripting-common + ${kotlin.version} + + + org.jetbrains.kotlin + kotlin-scripting-dependencies + ${kotlin.version} + + + org.jetbrains.kotlin + kotlin-scripting-dependencies-maven + ${kotlin.version} + + + org.jetbrains.kotlin + kotlin-scripting-jvm + ${kotlin.version} + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + org.jetbrains.kotlin + kotlin-test + ${kotlin.version} + + + org.jetbrains.kotlin + kotlin-test-junit5 + ${kotlin.version} + + + org.jetbrains.kotlinx + kotlinx-serialization-json-jvm + ${kotlinx.serialization.version} + + + org.projectlombok + lombok + ${lombok.version} + + + org.apache.maven.plugin-tools + maven-plugin-annotations + ${maven.plugin.annotations.version} + + + org.apache.maven + maven-plugin-api + ${maven.plugin.api.version} + + + org.apache.maven + maven-project + ${maven.project.version} + + + org.scip-code + scip-java-bindings + ${scip.bindings.version} + + + org.scip-code + scip-kotlin-bindings + ${scip.bindings.version} + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven.compiler.plugin.version} + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven.surefire.plugin.version} + + + org.apache.maven.plugins + maven-jar-plugin + ${maven.jar.plugin.version} + + + default-jar + none + + + jar-before-shade + process-classes + + jar + + + true + + + + + + org.apache.maven.plugins + maven-shade-plugin + ${maven.shade.plugin.version} + + + shade-all + process-classes + + shade + + + true + all + false + + + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + ${maven.dependency.plugin.version} + + + org.apache.maven.plugins + maven-resources-plugin + ${maven.resources.plugin.version} + + + org.apache.maven.plugins + maven-antrun-plugin + ${maven.antrun.plugin.version} + + + org.apache.maven.plugins + maven-plugin-plugin + ${maven.plugin.plugin.version} + + + org.apache.maven.plugins + maven-deploy-plugin + ${maven.deploy.plugin.version} + + + org.xolstice.maven.plugins + protobuf-maven-plugin + ${protobuf.maven.plugin.version} + + + org.codehaus.mojo + appassembler-maven-plugin + ${appassembler.plugin.version} + + + org.codehaus.mojo + exec-maven-plugin + ${exec.plugin.version} + + + org.codehaus.mojo + flatten-maven-plugin + ${flatten.maven.plugin.version} + + + + + + + org.codehaus.mojo + flatten-maven-plugin + + resolveCiFriendliesOnly + true + + + + flatten + process-resources + + flatten + + + + flatten.clean + clean + + clean + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${maven.compiler.release} + ${project.build.sourceEncoding} + + + + org.apache.maven.plugins + maven-surefire-plugin + + false + false + + + + org.apache.maven.plugins + maven-deploy-plugin + + ${maven.deploy.skip} + + + + + diff --git a/scip-aggregator/BUILD b/scip-aggregator/BUILD index e48175189..bb19c7bb1 100644 --- a/scip-aggregator/BUILD +++ b/scip-aggregator/BUILD @@ -1,5 +1,6 @@ load("@com_google_protobuf//bazel:java_proto_library.bzl", "java_proto_library") load("@com_google_protobuf//bazel:proto_library.bzl", "proto_library") +load("@rules_jvm_external//:defs.bzl", "artifact") load("@rules_java//java:defs.bzl", "java_binary", "java_library") package( @@ -10,7 +11,10 @@ java_binary( name = "bazel", main_class = "com.sourcegraph.scip_aggregator.BazelBuildTool", runtime_deps = [ - ":scip-aggregator", + artifact( + "com.sourcegraph:scip-aggregator:0.0.0-SNAPSHOT", + repository_name = "local_maven", + ), ], ) diff --git a/scip-aggregator/pom.xml b/scip-aggregator/pom.xml new file mode 100644 index 000000000..3ea8562a5 --- /dev/null +++ b/scip-aggregator/pom.xml @@ -0,0 +1,71 @@ + + + 4.0.0 + + + com.sourcegraph + scip-java-root + ${revision} + ../pom.xml + + + scip-aggregator + scip-aggregator + Aggregates compiler-plugin SCIP shards into a single SCIP index + + + + + kr.motd.maven + os-maven-plugin + 1.7.1 + + + + + org.xolstice.maven.plugins + protobuf-maven-plugin + + ${project.basedir}/src/main/protobuf + com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier} + + + + + compile + + + + + + + + + + org.scip-code + scip-java-bindings + + + com.sourcegraph + scip-shared + ${project.version} + + + org.junit.jupiter + junit-jupiter-api + test + + + org.junit.jupiter + junit-jupiter-engine + test + + + org.junit.platform + junit-platform-launcher + test + + + diff --git a/scip-gradle-plugin/pom.xml b/scip-gradle-plugin/pom.xml new file mode 100644 index 000000000..eda60aa5d --- /dev/null +++ b/scip-gradle-plugin/pom.xml @@ -0,0 +1,45 @@ + + + 4.0.0 + + + com.sourcegraph + scip-java-root + ${revision} + ../pom.xml + + + scip-gradle-plugin + scip-gradle-plugin + + true + + + + + dev.gradleplugins + gradle-api + provided + + + dev.gradleplugins + gradle-test-kit + provided + + + + + + + org.apache.maven.plugins + maven-jar-plugin + + + org.apache.maven.plugins + maven-shade-plugin + + + + diff --git a/scip-java/pom.xml b/scip-java/pom.xml new file mode 100644 index 000000000..26b90d1df --- /dev/null +++ b/scip-java/pom.xml @@ -0,0 +1,264 @@ + + + 4.0.0 + + + com.sourcegraph + scip-java-root + ${revision} + ../pom.xml + + + scip-java + scip-java + Java and Kotlin indexer for SCIP + + + + com.sourcegraph + scip-aggregator + ${project.version} + + + + com.sourcegraph + scip-javac + ${project.version} + all + provided + true + + + com.sourcegraph + scip-kotlinc + ${project.version} + all + provided + true + + + com.sourcegraph + scip-gradle-plugin + ${project.version} + all + provided + true + + + com.github.ajalt.clikt + clikt-jvm + + + org.jetbrains.kotlin + kotlin-stdlib + + + org.jetbrains.kotlin + kotlin-compiler-embeddable + + + org.jetbrains.kotlin + kotlin-scripting-common + + + org.jetbrains.kotlin + kotlin-scripting-jvm + + + org.jetbrains.kotlin + kotlin-scripting-dependencies + + + org.jetbrains.kotlin + kotlin-scripting-dependencies-maven + + + org.jetbrains.kotlinx + kotlinx-serialization-json-jvm + + + org.jetbrains.kotlin + kotlin-test + test + + + org.jetbrains.kotlin + kotlin-test-junit5 + test + + + org.junit.jupiter + junit-jupiter-engine + test + + + org.junit.platform + junit-platform-launcher + test + + + + + + + src/main/resources + + + ${maven.multiModuleProjectDirectory}/gradle + + javac-internals.properties + + + + ${project.build.directory}/generated-resources/embedded + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-embedded-jars + generate-resources + + copy + + + + + com.sourcegraph + scip-javac + ${project.version} + all + jar + ${project.build.directory}/generated-resources/embedded + scip-plugin.jar + + + com.sourcegraph + scip-gradle-plugin + ${project.version} + all + jar + ${project.build.directory}/generated-resources/embedded + gradle-plugin.jar + + + com.sourcegraph + scip-kotlinc + ${project.version} + all + jar + ${project.build.directory}/generated-resources/embedded + scip-kotlinc.jar + + + + + + + + org.jetbrains.kotlin + kotlin-maven-plugin + + + compile + compile + + compile + + + 11 + + ${project.basedir}/src/main/kotlin + + + + + test-compile + test-compile + + test-compile + + + 11 + + ${project.basedir}/src/test/kotlin + + + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + ${project.version} + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + ${javac.jvm.options} + + 11 + + + + + org.codehaus.mojo + appassembler-maven-plugin + + + assemble-cli + package + + assemble + + + + + ${project.build.directory}/install/scip-java + lib + bin + + + scip-java + com.sourcegraph.scip_java.ScipJava + + + + + + org.apache.maven.plugins + maven-antrun-plugin + + + write-distribution-version + package + + run + + + + + version:=${project.version} + + + + + + + + diff --git a/scip-javac/BUILD b/scip-javac/BUILD index d2f80bd83..4cde13a0b 100644 --- a/scip-javac/BUILD +++ b/scip-javac/BUILD @@ -1,4 +1,5 @@ load("@bazel_skylib//rules:common_settings.bzl", "string_flag") +load("@rules_jvm_external//:defs.bzl", "artifact") load("@rules_java//java:defs.bzl", "java_library", "java_plugin") package( @@ -22,7 +23,10 @@ string_flag( java_plugin( name = "plugin", deps = [ - ":scip-javac", + artifact( + "com.sourcegraph:scip-javac:jar:all:0.0.0-SNAPSHOT", + repository_name = "local_maven", + ), ], ) diff --git a/scip-javac/pom.xml b/scip-javac/pom.xml new file mode 100644 index 000000000..730dda91b --- /dev/null +++ b/scip-javac/pom.xml @@ -0,0 +1,130 @@ + + + 4.0.0 + + + com.sourcegraph + scip-java-root + ${revision} + ../pom.xml + + + scip-javac + scip-javac + A javac plugin to emit SCIP information + + + + com.sourcegraph + scip-shared + ${project.version} + + + org.junit.jupiter + junit-jupiter-api + test + + + org.junit.jupiter + junit-jupiter-engine + test + + + org.junit.platform + junit-platform-launcher + test + + + + + + + org.apache.maven.plugins + maven-antrun-plugin + + + create-empty-processorpath + generate-sources + + run + + + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + true + none + + -processorpath + ${project.build.directory}/empty-processorpath + + + + + org.apache.maven.plugins + maven-surefire-plugin + + ${javac.jvm.options} + + + + org.apache.maven.plugins + maven-jar-plugin + + + org.apache.maven.plugins + maven-shade-plugin + + + shade-all + + + + *:* + + javax/** + com/sun/** + sun/** + META-INF/versions/9/module-info.class + + + + + + com.google + com.sourcegraph.shaded.com.google + + + google + com.sourcegraph.shaded.google + + + org.relaxng + com.sourcegraph.shaded.relaxng + + + com.sourcegraph + com.sourcegraph.shaded.com.sourcegraph + + com.sourcegraph.scip_javac.ScipPlugin + com.sourcegraph.scip_javac.InjectScipOptions + + + + + + + + + + diff --git a/scip-kotlinc/pom.xml b/scip-kotlinc/pom.xml new file mode 100644 index 000000000..73c8b0148 --- /dev/null +++ b/scip-kotlinc/pom.xml @@ -0,0 +1,145 @@ + + + 4.0.0 + + + com.sourcegraph + scip-java-root + ${revision} + ../pom.xml + + + scip-kotlinc + scip-kotlinc + A kotlinc plugin to emit SCIP information + + + + com.sourcegraph + scip-shared + ${project.version} + + + org.scip-code + scip-kotlin-bindings + + + org.jetbrains.kotlin + kotlin-stdlib + provided + + + org.jetbrains.kotlin + kotlin-compiler-embeddable + provided + + + org.jetbrains.kotlin + kotlin-test + test + + + org.jetbrains.kotlin + kotlin-test-junit5 + test + + + org.jetbrains.kotlin + kotlin-reflect + test + + + io.kotest + kotest-assertions-core-jvm + test + + + dev.zacsweers.kctfork + core + test + + + org.junit.jupiter + junit-jupiter-engine + test + + + org.junit.platform + junit-platform-launcher + test + + + + + + + org.jetbrains.kotlin + kotlin-maven-plugin + + + compile + compile + + compile + + + 11 + + ${project.basedir}/src/main/kotlin + + + -Xcontext-parameters + + + + + test-compile + test-compile + + test-compile + + + 11 + + ${project.basedir}/src/test/kotlin + + + -Xcontext-parameters + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + -Xmx2g + + + + org.apache.maven.plugins + maven-jar-plugin + + + org.apache.maven.plugins + maven-shade-plugin + + + shade-all + + + + com.intellij + org.jetbrains.kotlin.com.intellij + + + + + + + + + diff --git a/scip-maven-plugin/pom.xml b/scip-maven-plugin/pom.xml new file mode 100644 index 000000000..5294f4fbe --- /dev/null +++ b/scip-maven-plugin/pom.xml @@ -0,0 +1,71 @@ + + + 4.0.0 + + + com.sourcegraph + scip-java-root + ${revision} + ../pom.xml + + + scip-maven-plugin + maven-plugin + scip-maven-plugin + A Maven plugin that exports dependency metadata for scip-java + + + + org.apache.maven + maven-plugin-api + provided + + + org.apache.maven + maven-project + provided + + + org.apache.maven.plugin-tools + maven-plugin-annotations + provided + + + + + + + src/main/resources + + META-INF/maven/plugin.template.xml + + + + + + org.apache.maven.plugins + maven-plugin-plugin + + sourcegraph + false + + + + descriptor + + descriptor + + + + help-goal + + helpmojo + + + + + + + diff --git a/scip-maven-plugin/src/main/java/com/sourcegraph/maven/DependencyWriterMojo.java b/scip-maven-plugin/src/main/java/com/sourcegraph/maven/DependencyWriterMojo.java index 7ff2a74a2..cf44d29bc 100644 --- a/scip-maven-plugin/src/main/java/com/sourcegraph/maven/DependencyWriterMojo.java +++ b/scip-maven-plugin/src/main/java/com/sourcegraph/maven/DependencyWriterMojo.java @@ -16,9 +16,10 @@ @Mojo( name = "sourcegraphDependencies", - defaultPhase = LifecyclePhase.COMPILE, + defaultPhase = LifecyclePhase.GENERATE_RESOURCES, requiresDependencyResolution = ResolutionScope.TEST, - requiresProject = true) + requiresProject = true, + threadSafe = true) public class DependencyWriterMojo extends AbstractMojo { @Parameter(defaultValue = "${project}", required = true, readonly = true) MavenProject project; diff --git a/scip-shared/pom.xml b/scip-shared/pom.xml new file mode 100644 index 000000000..d90693f2a --- /dev/null +++ b/scip-shared/pom.xml @@ -0,0 +1,24 @@ + + + 4.0.0 + + + com.sourcegraph + scip-java-root + ${revision} + ../pom.xml + + + scip-shared + scip-shared + Shared SCIP utilities used by scip-java compiler plugins + + + + org.scip-code + scip-java-bindings + + + diff --git a/scip-snapshots/README.md b/scip-snapshots/README.md index 1da6073c1..538af89fb 100644 --- a/scip-snapshots/README.md +++ b/scip-snapshots/README.md @@ -20,5 +20,6 @@ expected/ version-specific cases when a fixture needs newer language features, for example `cases/java/release-17`, `cases/java/release-21`, or `cases/kotlin/kotlin-2.2`. -Run `gradle :scip-snapshots:test` to compare goldens and -`gradle :scip-snapshots:saveSnapshots` to regenerate them. +Run `mvn --batch-mode -pl scip-snapshots -am test` to compare goldens and +`mvn --batch-mode -pl scip-snapshots -am -DskipTests -PsaveSnapshots verify` to +regenerate them. diff --git a/scip-snapshots/cases/java/common/pom.xml b/scip-snapshots/cases/java/common/pom.xml new file mode 100644 index 000000000..50f5b678e --- /dev/null +++ b/scip-snapshots/cases/java/common/pom.xml @@ -0,0 +1,86 @@ + + + 4.0.0 + + + com.sourcegraph + scip-java-root + ${revision} + ../../../../pom.xml + + + scip-snapshots-java-common + scip-snapshots-java-common + + true + + + + + com.sourcegraph + scip-javac + ${project.version} + all + provided + + + org.projectlombok + lombok + provided + + + + + + + org.apache.maven.plugins + maven-antrun-plugin + + + clean-scip-targetroot + generate-sources + + run + + + + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + true + + + org.projectlombok + lombok + ${lombok.version} + + + com.sourcegraph + scip-javac + ${project.version} + all + + + + -J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED + -Xplugin:scip -text:on -verbose -sourceroot:${maven.multiModuleProjectDirectory} -targetroot:${project.build.directory}/scip-targetroot -randomtimestamp=${maven.build.timestamp} + + + + + + diff --git a/scip-snapshots/cases/kotlin/common/pom.xml b/scip-snapshots/cases/kotlin/common/pom.xml new file mode 100644 index 000000000..c6f6cf895 --- /dev/null +++ b/scip-snapshots/cases/kotlin/common/pom.xml @@ -0,0 +1,118 @@ + + + 4.0.0 + + + com.sourcegraph + scip-java-root + ${revision} + ../../../../pom.xml + + + scip-snapshots-kotlin-common + scip-snapshots-kotlin-common + + true + + + + + com.sourcegraph + scip-javac + ${project.version} + all + provided + + + com.sourcegraph + scip-kotlinc + ${project.version} + all + provided + + + org.jetbrains.kotlin + kotlin-stdlib + + + + + + + org.apache.maven.plugins + maven-antrun-plugin + + + clean-scip-targetroot + generate-sources + + run + + + + + + + + + + + + org.jetbrains.kotlin + kotlin-maven-plugin + + + compile + compile + + compile + + + 11 + + ${project.basedir}/src/main/kotlin + + + -Xplugin=${maven.multiModuleProjectDirectory}/scip-kotlinc/target/scip-kotlinc-${project.version}-all.jar + -P + plugin:scip-kotlinc:sourceroot=${maven.multiModuleProjectDirectory} + -P + plugin:scip-kotlinc:targetroot=${project.build.directory}/scip-targetroot + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + default-compile + none + + + java-compile + compile + + compile + + + + + true + + -J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED + -Xplugin:scip -sourceroot:${maven.multiModuleProjectDirectory} -targetroot:${project.build.directory}/scip-targetroot + + + + + + diff --git a/scip-snapshots/pom.xml b/scip-snapshots/pom.xml new file mode 100644 index 000000000..0dccd2039 --- /dev/null +++ b/scip-snapshots/pom.xml @@ -0,0 +1,149 @@ + + + 4.0.0 + + + com.sourcegraph + scip-java-root + ${revision} + ../pom.xml + + + scip-snapshots + scip-snapshots + + true + ${maven.multiModuleProjectDirectory} + ${maven.multiModuleProjectDirectory}/scip-snapshots/expected/java/common + ${maven.multiModuleProjectDirectory}/scip-snapshots/cases/java/common/target/scip-targetroot + ${maven.multiModuleProjectDirectory}/scip-snapshots/expected/kotlin/common + ${maven.multiModuleProjectDirectory}/scip-snapshots/cases/kotlin/common/target/scip-targetroot + + + + + com.sourcegraph + scip-java + ${project.version} + + + com.sourcegraph + scip-snapshots-java-common + ${project.version} + test + + + com.sourcegraph + scip-snapshots-kotlin-common + ${project.version} + test + + + org.scip-code + scip-java-bindings + + + org.junit.jupiter + junit-jupiter-api + test + + + org.junit.jupiter + junit-jupiter-engine + test + + + org.junit.platform + junit-platform-launcher + test + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + ${javac.jvm.options} + + ${snapshot.sourceroot} + java-common,kotlin-common + ${snapshot.java.expectDir} + ${snapshot.java.targetroot} + ${snapshot.kotlin.expectDir} + ${snapshot.kotlin.targetroot} + true + 11 + + + + + + + + + saveSnapshots + + true + + + + + org.codehaus.mojo + exec-maven-plugin + + + save-snapshots + verify + + java + + + tests.SaveSnapshots + test + + + snapshot.sourceroot + ${snapshot.sourceroot} + + + snapshot.cases + java-common,kotlin-common + + + snapshot.case.java-common.expectDir + ${snapshot.java.expectDir} + + + snapshot.case.java-common.targetroot + ${snapshot.java.targetroot} + + + snapshot.case.kotlin-common.expectDir + ${snapshot.kotlin.expectDir} + + + snapshot.case.kotlin-common.targetroot + ${snapshot.kotlin.targetroot} + + + snapshot.case.kotlin-common.aggregateNoEmitInverseRelationships + true + + + scip.jdk.version + 11 + + + + + + + + + + + diff --git a/scip-snapshots/src/main/java/tests/MinimizedSnapshotScipGenerator.java b/scip-snapshots/src/main/java/tests/MinimizedSnapshotScipGenerator.java index dc635c0ce..0cd8ed930 100644 --- a/scip-snapshots/src/main/java/tests/MinimizedSnapshotScipGenerator.java +++ b/scip-snapshots/src/main/java/tests/MinimizedSnapshotScipGenerator.java @@ -18,7 +18,7 @@ /** * Indexes the {@code scip-snapshots/cases} corpora and renders golden SCIP snapshots. Runtime paths - * are supplied as {@code -Dsnapshot.*} system properties by the Gradle build. + * are supplied as {@code -Dsnapshot.*} system properties by the Maven build. */ public class MinimizedSnapshotScipGenerator { public static final class SnapshotCase { @@ -141,7 +141,8 @@ private static String requiredProperty(String name) { throw new IllegalStateException( "Missing -D" + name - + ". Run via gradle :scip-snapshots:test or :scip-snapshots:saveSnapshots."); + + ". Run via mvn -pl scip-snapshots -am test or mvn -pl scip-snapshots -am" + + " -DskipTests -PsaveSnapshots verify."); } return value; } diff --git a/scip-snapshots/src/main/java/tests/SaveSnapshots.java b/scip-snapshots/src/main/java/tests/SaveSnapshots.java index 1180e8d6e..6f0600e45 100644 --- a/scip-snapshots/src/main/java/tests/SaveSnapshots.java +++ b/scip-snapshots/src/main/java/tests/SaveSnapshots.java @@ -1,8 +1,9 @@ package tests; /** - * Regenerates all snapshot goldens (invoked by {@code gradle :scip-snapshots:saveSnapshots}). - * Snapshot cases are supplied via {@code -Dsnapshot.*} system properties by the Gradle build. + * Regenerates all snapshot goldens (invoked by {@code mvn -pl scip-snapshots -am -DskipTests + * -PsaveSnapshots verify}). Snapshot cases are supplied via {@code -Dsnapshot.*} system properties + * by the Maven build. */ public final class SaveSnapshots { private SaveSnapshots() {} diff --git a/scip-snapshots/src/test/java/tests/AssertSnapshotHandler.java b/scip-snapshots/src/test/java/tests/AssertSnapshotHandler.java index 201ba04b3..c3ca8a8a6 100644 --- a/scip-snapshots/src/test/java/tests/AssertSnapshotHandler.java +++ b/scip-snapshots/src/test/java/tests/AssertSnapshotHandler.java @@ -40,8 +40,9 @@ public void onSnapshotTest( fail( "no snapshot file for " + relativePath - + ". To fix this problem, execute the command 'gradle" - + " :scip-snapshots:saveSnapshots'"); + + ". To fix this problem, execute the command 'mvn" + + " --batch-mode -pl scip-snapshots -am -DskipTests -PsaveSnapshots" + + " verify'"); } String expected; try {