Skip to main content

install-anserini-dev-env

Set up and verify Anserini source-development environments. Use for JDK 21, Maven 3.9+, submodules, Anserini build scripts, smoke tests, and Java/Maven troubleshooting in castorini/anserini. Use when this capability is needed.

Ir para a instalação

Informações da origem

Repositório
tomevault-io/tomes
Última atividade na origem
23 de julho de 2026 às 21:48
Idioma detectado do SKILL.md
inglês
Estrelas
1
Forks
0

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
install-anserini-dev-env
description
Set up and verify Anserini source-development environments. Use for JDK 21, Maven 3.9+, submodules, Anserini build scripts, smoke tests, and Java/Maven troubleshooting in castorini/anserini. Use when this capability is needed.
metadata
{"author":"castorini"}
# Install Anserini Dev Env ## Overview Use this skill to prepare Anserini for source development, not just fatjar execution. Prefer normal Java tooling over Python-style virtual environments: pin/select JDK 21, use Maven 3.9+, clone submodules, then build with Anserini's scripts or Maven. Do not assume a released fatjar is sufficient for source-development requests; use the checkout when local code, tests, or snapshots matter. ## Workflow 1. Verify requirements first: - Require `java` to report major version `21`. - Require `mvn` to report version `3.9` or newer. - Check for `git` and `make`; `make` is needed for bundled evaluation tools. ```bash java -version mvn -v git --version make --version git submodule status --recursive test -d tools/eval ``` 2. If Java is missing or not exactly 21, select or install JDK 21 with the user's existing version manager when possible: - Prefer `mise`, `sdkman`, `asdf`, or `jenv` if already present. - On macOS, Homebrew Temurin/OpenJDK 21 is acceptable when no Java version manager is in use. - Do not create a Python virtual environment for Java development. 3. If Maven is missing or older than 3.9, update Maven using the host's package manager or version manager. Anserini does not currently rely on a checked-in Maven wrapper. 4. Clone with submodules: ```bash git clone --recurse-submodules https://github.com/castorini/anserini.git ``` If the user has already provided an empty destination directory and wants the checkout there, clone into the current directory: ```bash git clone --recurse-submodules https://github.com/castorini/anserini.git . ``` For an existing checkout, run: ```bash git submodule update --init --recursive ``` 5. Build from the repository root. Prefer Anserini's checked-in build scripts when present: ```bash bin/qbuild.sh ``` Use `bin/qbuild.sh` for a quick build; it skips tests and Javadocs. After a successful quick build, expect the shaded artifact at `target/anserini-*-fatjar.jar`. ```bash bin/build.sh ``` Use `bin/build.sh` for a full build; it runs all tests and can take a while. While it runs, provide periodic progress updates. Track completed Surefire tests from Maven output or `target/surefire-reports` when possible, and report the final aggregate `Tests run: N` count when the build finishes. If a script is unavailable or the user explicitly asks for Maven, use: ```bash mvn clean package ``` 6. Build evaluation tools only when needed for evaluation workflows: ensure `tools/` is initialized first because these commands assume the `anserini-tools` submodule is present. ```bash git submodule update --init --recursive tar xvfz tools/eval/trec_eval.9.0.4.tar.gz -C tools/eval make -C tools/eval/trec_eval.9.0.4 make -C tools/eval/ndeval ``` Use separate shell commands when executing this workflow in Codex so failures are visible at the exact step. ## Verification After setup, re-run the explicit requirement checks. Then run the lightest verification that matches the user's goal: `bin/qbuild.sh` for a build-ready checkout, `bin/build.sh` for full validation, or targeted Maven tests for a code change. If dependency downloads fail because network access is sandboxed, rerun the build command with escalation instead of changing project files. If a build was run, a concise final sanity check is: ```bash git status --short --branch --ignored git submodule status --recursive ls -lh target/*fatjar.jar ``` For a functional smoke test after a successful build, run the CACM prebuilt-index reproduction command: ```bash bin/run.sh io.anserini.search.SearchCollection \ -index cacm \ -topics cacm \ -output run.cacm.bm25.txt \ -hits 1000 \ -bm25 ``` Treat a successful run and generated `run.cacm.bm25.txt` file as proof that the checkout can execute Anserini search end to end. This command may download the small CACM prebuilt index and topics on first use, so skip it when the user only wants a local build check. Then evaluate the run with Anserini's Java `trec_eval` wrapper: ```bash bin/run.sh io.anserini.eval.TrecEval \ -c \ -m map \ -m P.30 \ cacm \ run.cacm.bm25.txt ``` Expected scores are: ```text map all 0.3123 P_30 all 0.1942 ``` To verify them mechanically: ```bash bin/run.sh io.anserini.eval.TrecEval \ -c \ -m map \ -m P.30 \ cacm \ run.cacm.bm25.txt | tee eval.cacm.bm25.txt grep -q $'map\tall\t0.3123' eval.cacm.bm25.txt grep -q $'P_30\tall\t0.1942' eval.cacm.bm25.txt ``` For CLI examples after setup, use `$anserini-cli`. ## Troubleshooting - If `java -version` and `mvn -v` disagree about Java versions, fix `JAVA_HOME` and `PATH` so Maven uses JDK 21. - On macOS, `trec_eval` and `ndeval` may emit warnings from older C code, including `bzero` or `bcopy` macro redefinitions, deprecated non-prototype functions, or `printf` format-security warnings. Treat these as expected if `make` exits successfully and the binaries are produced. - On Windows, use WSL2 for Anserini builds. - Avoid commands that trigger large prebuilt index downloads unless the user explicitly asks for retrieval experiments; Anserini can download large indexes on demand. - Treat Anserini's current README as the source of truth for version requirements if it differs from this skill. --- > Source: [castorini/anserini](https://github.com/castorini/anserini) — distributed by [TomeVault](https://tomevault.io). <!-- tomevault:4.0:skill_md:2026-06-19 -->
Ver no GitHub