Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Apache Paimon

This file provides context and guidelines for AI coding assistants working with the Apache Paimon codebase.

## Syntax Requirements

- Based on JDK 8 and Scala 2.12, higher version syntax features must not be used.

## Build and Test

Prefer the smallest possible build/test scope and use the local iteration speedup techniques below to keep feedback loops fast.

### Build

Prefer using Maven module selection to minimize the build scope.

- Compile a single module: `mvn -pl <module> -DskipTests compile`
- Compile multiple modules: `mvn -pl <module1>,<module2> -DskipTests compile`

### Test

Prefer running the narrowest tests.

- Run test for a single method: `mvn -pl <module> -Dtest=TestClassName#methodName test`
- Run test for a single class: `mvn -pl <module> -Dtest=TestClassName test`

### Local Iteration Speedup

#### Use Maven Skip Options

Prefer these skip options for faster local iteration, but don't rely on them for final verification.

```shell
-Dcheckstyle.skip -Dspotless.check.skip -Denforcer.skip
```

For example:

```shell
mvn -pl <module> -Dcheckstyle.skip -Dspotless.check.skip -Denforcer.skip -Dtest=TestClassName#methodName test
```

#### Use -am (also-make)

If your target module depends on other modules you've changed locally, prefer `-am` to rebuild them together in the same reactor.
Also add `-DfailIfNoTests=false` to avoid failures for modules without tests.

For example:

```shell
mvn -pl <module> -am -DfailIfNoTests=false -Dtest=TestClassName#methodName test
```
3 changes: 1 addition & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -612,8 +612,7 @@ under the License.
<exclude>**/*.prefs</exclude>
<exclude>**/*.log</exclude>
<!-- Administrative files in the main trunk. -->
<exclude>**/README.md</exclude>
<exclude>**/CODE_OF_CONDUCT.md</exclude>
<exclude>**/*.md</exclude>
<exclude>.github/**</exclude>
<!-- IDE files. -->
<exclude>**/*.iml</exclude>
Expand Down