|
59 | 59 | </javaModulesSurefireArgLine> |
60 | 60 | <parallelizeLiveTests>concurrent</parallelizeLiveTests> |
61 | 61 |
|
| 62 | + <!-- Exclude vendored Apache Arrow code from linting checks --> |
| 63 | + <checkstyle.excludes>**/implementation/util/apachearrow/**/*.java</checkstyle.excludes> |
| 64 | + <spotbugs.excludes>**/implementation/util/apachearrow/**/*.java</spotbugs.excludes> |
| 65 | + |
62 | 66 | <spotbugs.skip>false</spotbugs.skip> |
63 | 67 | </properties> |
64 | 68 |
|
|
138 | 142 | <version>1.17.7</version> <!-- {x-version-update;testdep_net.bytebuddy:byte-buddy-agent;external_dependency} --> |
139 | 143 | <scope>test</scope> |
140 | 144 | </dependency> |
| 145 | + |
| 146 | + <!-- Arrow dependency --> |
| 147 | + <!-- The internal ListBlobs Arrow reader decodes the IPC stream using vendored FlatBuffer metadata accessors |
| 148 | + (com.azure.storage.blob.implementation.util.apachearrow) backed by flatbuffers-java, so flatbuffers-java is the |
| 149 | + sole dependency needed to parse the Arrow format. The arrow-format artifact is deliberately NOT a dependency: |
| 150 | + it ships Java 11 bytecode and would break the Java 8 baseline build. The reader's behavior is validated against |
| 151 | + committed golden base64 fixtures (src/test/resources/arrow) rather than the official arrow-vector writer, so no |
| 152 | + Apache Arrow test dependency is required. --> |
| 153 | + <dependency> |
| 154 | + <groupId>com.google.flatbuffers</groupId> |
| 155 | + <artifactId>flatbuffers-java</artifactId> |
| 156 | + <version>24.3.25</version> <!-- {x-version-update;com.google.flatbuffers:flatbuffers-java;external_dependency} --> |
| 157 | + </dependency> |
| 158 | + |
141 | 159 | </dependencies> |
142 | 160 |
|
143 | 161 | <profiles> |
|
182 | 200 | </plugins> |
183 | 201 | </build> |
184 | 202 | </profile> |
| 203 | + |
| 204 | + <!-- This profile is used to generate a sources JAR with arrow-format shaded into com.azure.storage.blob.implementation.util.apachearrow. --> |
| 205 | + <!-- DO NOT run this profile with release, it is only meant to be run locally when the shaded Apache Arrow code needs to be updated. --> |
| 206 | + <!-- --> |
| 207 | + <!-- To update the shaded Apache Arrow code, run Maven build with '-Dshade-apache-arrow-format' included in the command. --> |
| 208 | + <!-- In the target folder, extract the sources JAR. The path com/azure/storage/blob/implementation/util/apachearrow will contain the relocated Apache Arrow source code. --> |
| 209 | + <!-- Copy this code into the com.azure.storage.blob.implementation.util.apachearrow package in azure-storage-blob and overwrite the existing files. --> |
| 210 | + <profile> |
| 211 | + <id>shade-apache-arrow-format</id> |
| 212 | + <activation> |
| 213 | + <property> |
| 214 | + <name>shade-apache-arrow-format</name> |
| 215 | + </property> |
| 216 | + </activation> |
| 217 | + |
| 218 | + <dependencies> |
| 219 | + <dependency> |
| 220 | + <groupId>org.apache.arrow</groupId> |
| 221 | + <artifactId>arrow-format</artifactId> |
| 222 | + <version>19.0.0</version> <!-- {x-version-update;org.apache.arrow:arrow-format;external_dependency} --> |
| 223 | + </dependency> |
| 224 | + </dependencies> |
| 225 | + |
| 226 | + <build> |
| 227 | + <plugins> |
| 228 | + <plugin> |
| 229 | + <groupId>org.apache.maven.plugins</groupId> |
| 230 | + <artifactId>maven-shade-plugin</artifactId> |
| 231 | + <version>3.6.0</version> <!-- {x-version-update;org.apache.maven.plugins:maven-shade-plugin;external_dependency} --> |
| 232 | + |
| 233 | + <executions> |
| 234 | + <execution> |
| 235 | + <id>shade</id> |
| 236 | + <phase>package</phase> |
| 237 | + <goals> |
| 238 | + <goal>shade</goal> |
| 239 | + </goals> |
| 240 | + </execution> |
| 241 | + </executions> |
| 242 | + |
| 243 | + <configuration> |
| 244 | + <createSourcesJar>true</createSourcesJar> |
| 245 | + <shadeSourcesContent>true</shadeSourcesContent> |
| 246 | + <shadedArtifactAttached>true</shadedArtifactAttached> |
| 247 | + <shadedClassifierName>shade-apache-arrow-format</shadedClassifierName> |
| 248 | + <createDependencyReducedPom>false</createDependencyReducedPom> |
| 249 | + |
| 250 | + <artifactSet> |
| 251 | + <includes> |
| 252 | + <include>org.apache.arrow:arrow-format</include> <!-- {x-include-update;org.apache.arrow:arrow-format;external_dependency} --> |
| 253 | + </includes> |
| 254 | + </artifactSet> |
| 255 | + |
| 256 | + <relocations> |
| 257 | + <relocation> |
| 258 | + <pattern>org.apache.arrow.flatbuf</pattern> |
| 259 | + <shadedPattern>com.azure.storage.blob.implementation.util.apachearrow</shadedPattern> |
| 260 | + </relocation> |
| 261 | + </relocations> |
| 262 | + </configuration> |
| 263 | + </plugin> |
| 264 | + |
| 265 | + <plugin> |
| 266 | + <groupId>org.apache.maven.plugins</groupId> |
| 267 | + <artifactId>maven-enforcer-plugin</artifactId> |
| 268 | + <version>3.6.1</version> <!-- {x-version-update;org.apache.maven.plugins:maven-enforcer-plugin;external_dependency} --> |
| 269 | + <configuration> |
| 270 | + <rules> |
| 271 | + <bannedDependencies> |
| 272 | + <includes> |
| 273 | + <include>org.apache.arrow:arrow-format:[19.0.0]</include> <!-- {x-include-update;org.apache.arrow:arrow-format;external_dependency} --> |
| 274 | + </includes> |
| 275 | + </bannedDependencies> |
| 276 | + </rules> |
| 277 | + </configuration> |
| 278 | + </plugin> |
| 279 | + </plugins> |
| 280 | + </build> |
| 281 | + </profile> |
185 | 282 | </profiles> |
186 | 283 | </project> |
0 commit comments