AGENTS.md 2.2 KB

AGENTS.md

Project Overview

Java 17 / Maven tutorial project for JDK CompletableFuture API. Produces Chinese-language tutorial documents and accompanying code demos.

Build & Run

mvn compile                                          # compile
mvn exec:java -Dexec.mainClass=space.anyi.Cf01_CreateStage   # run a demo (pick a Cf* class)
mvn test                                              # run tests (currently none)
  • exec:java requires -Dexec.mainClass (the pom does not configure a default mainClass).
  • In this environment mvn may not be on PATH. Use the IntelliJ-bundled Maven: C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.3.8\plugins\maven\lib\maven3\bin
  • PowerShell splits unquoted -Dexec.mainClass=...; quote the argument: '-Dexec.mainClass=space.anyi.Cf01_CreateStage'.
  • Console shows GBK encoding by default, so Chinese output may look garbled in terminal even though the program is correct.
  • exec:java is unreliable for demos that use orTimeout/completeOnTimeout (e.g. Cf10): the JDK CompletableFutureDelayScheduler thread lingers and exec-maven-plugin reports a threadGroup teardown error even when the program is correct. Run such demos with plain Java instead: & "C:\Program Files\Java\jdk-17\bin\java.exe" -cp target/classes space.anyi.Cf10_TimeoutAndException.

No other build tools, linters, or formatters are configured.

Structure

  • src/main/java/space/anyi/ — demo code (Cf01..Cf10, one file per API topic, each with a standalone main())
  • completablefuture-tutorial.md — tutorial doc (Chinese, follows template.md style)
  • completablefuture-blog.md — blog/cheat-sheet doc for experienced Java programmers
  • template.md — reference doc for writing style and structure (Chinese, covers JUC concurrency topics)
  • todo.md — task list for outstanding work

Conventions

  • Follow the narrative structure and code-example style in template.md when writing new tutorial content.
  • Package: space.anyi
  • All tutorial prose is in Chinese.
  • Code examples should be self-contained and runnable as standalone main() methods.
  • Commit to the local git repository after completing each small task (e.g., each demo file, each document).