tree 24ab0517b480e3b05fc3b25a110a1adabead2bb8
parent 72d85a778f559ddf1efe0b6909eb8146e5a1c646
author Enrico Minack <github@enrico.minack.dev> 1707878139 +0100
committer GitHub <noreply@github.com> 1707878139 +0800
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJlzCb7CRC1aQ7uu5UhlAAAVGQQACrPP/xotDe+mPYt7d+AAhjm
 n670J1XR2+CLP2w89KdfXPiVIWe+5AeoAHIbwvVQVXlAXsSs7T4XqS0sDJU2BjJy
 48MVgjXr56pMqsEXd0KaGuxQmREcoyFe6DTxMuY9bmFgmFWsC+JbC0R6W9qpJihM
 9lR0iO/dRjS7OuH2vbpfaZupHGSQ2cxJlyIC2u68bGtoSaNUU5mZ2GB8ethHQ+CN
 HnmUYAEMeuLAtg01S13T9tbcAgOxe4MxMvvmsK4DTMY92GKQP9DYWgeIRYZ6rg9Y
 MtoSJNS2TzJGjbLV2CTnyUAVZvGu8/vw9XTQ6V5t8XoNvQiEc988A33GYXCHN3fk
 8H8Lx0SBGPaZ7u6jRWPvmnQKaTGCK5Kv2seP7k9Inie0lcCVkAce9EO8VeRCpTvz
 4Lbs2YMrhOlqMVu8OtijtoH2L3/oDSFoqg21VnHcPGXygFWluDomka3Y7VGg+C0N
 XMNB+0UX5VG29x8C2xdzBV9too3OUQtngjvQXY+OQVja6aDWjJ4i/DphxYYZCbff
 h+qiX+6SKIxptBYnqt3nzvECpyCsfACuOYxWf4CPUJRsFwpAOS+mU/kksU13yCMK
 lJoICCHZWoywX5qyxvlssKFqgJxexaikdePP9V/VoNNm1ojLi9ooGEnmlEnOgc5Y
 NIEFqIax/Mu2R2fePvSr
 =2Z6t
 -----END PGP SIGNATURE-----
 

[MINOR] fix(pom): Add missing shuffle-server dependencies to work with -Ptez

### What changes were proposed in this pull request?
Make missing `shuffle-server` dependencies explicit in `server/pom.xml`.

### Why are the changes needed?
The `shuffle-server` module has dependencies that are not explicitly stated in the `pom.xml`, but transitively available. Notably, these are `commons-collections` and `hadoop-common`:
https://github.com/apache/incubator-uniffle/blob/866f5ff121948e2144729300a0f5cb03510db29d/server/src/main/java/org/apache/uniffle/server/ShuffleFlushManager.java#L27-L29

Run
```
./mvnw dependency:tree -pl org.apache.uniffle:shuffle-server -am
```
to see the dependency tree:
```
[INFO] -----------------< org.apache.uniffle:shuffle-server >------------------
[INFO] Building Apache Uniffle Server 0.9.0-SNAPSHOT                      [6/6]
[INFO]   from server/pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] …
[INFO] --- dependency:2.10:tree (default-cli) @ shuffle-server ---
[INFO] org.apache.uniffle:shuffle-server:jar:0.9.0-SNAPSHOT
[INFO] …
[INFO] +- org.apache.hadoop:hadoop-minicluster:jar:2.8.5:test
[INFO] |  +- org.apache.hadoop:hadoop-common:test-jar:tests:2.8.5:test
[INFO] …
[INFO] |  |  +- commons-collections:commons-collections:jar:3.2.2:provided
[INFO] …
[INFO] |  +- org.apache.hadoop:hadoop-common:jar:2.8.5:provided
```

Both dependencies are available through `org.apache.hadoop:hadoop-minicluster` as `provided`.

However, with `-Ptez`, the dependency tree changes in such a way that those transitive dependency become available only in `test` scope, breaking compilation of the `shuffle-server` module:
```
./mvnw dependency:tree -pl org.apache.uniffle:shuffle-server -am -Ptez
```
```
[INFO] -----------------< org.apache.uniffle:shuffle-server >------------------
[INFO] Building Apache Uniffle Server 0.9.0-SNAPSHOT                      [6/6]
[INFO]   from server/pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] …
[INFO] --- dependency:2.10:tree (default-cli) @ shuffle-server ---
[INFO] org.apache.uniffle:shuffle-server:jar:0.9.0-SNAPSHOT
[INFO] …
[INFO] +- org.apache.hadoop:hadoop-minicluster:jar:2.8.5:test
[INFO] …
[INFO] |  |  +- commons-collections:commons-collections:jar:3.2.2:compile
[INFO] …
[INFO] |  +- org.apache.hadoop:hadoop-common:jar:2.8.5:compile
```

The required dependencies are now in `compile` scope under a `test` scope dependency. The `mvnw` command line build tool seems robust against this, which is why CI works just fine. But IntelliJ IDE seems to handle those dependency trees literally and compilation breaks.

### Does this PR introduce _any_ user-facing change?
No.

### How was this patch tested?
Manually.