Requirements

Minimum requirements

This plugin requires that you meet the following requirements at a minimum:

  • Apache Maven 3.8.2 or newer
  • Java 11 or newer

While this plugin itself will work with many operating systems and architectures, you will find that the official releases of protoc by Google only support mainstream architectures and operating systems. These are listed below:

Operating system Supported CPU architectures Command to check
Linux
  • amd64 (x86_64)
  • aarch64
  • ppc64le (PowerPC)
  • s390x (zarch_64)
uname -m
Mac OS
  • amd64 (x86_64)
  • aarch64
uname -m
Windows
  • amd64 (x86_64)
  • x86 (x86_32)
echo %PROCESSOR_ARCHITECTURE%

Other platforms

Android

While technically Linux, Android locks down a number of system calls that the official build of protoc will rely on. For this reason, you will need to install or build a custom version of protoc, such as the one provided on the Termux repositories.

Refer to the protocVersion parameter documentation on the goals page for how you can override the binary being used.

Windows on ARM

As of right now, no official binaries for aarch64 Windows systems are provided. You may be able to use x86 emulation to get this to work. To do this, refer to the Microsoft ARM emulation documentation.

Pass the -Dos.arch=x86_64 -Dos.name=Windows flag to Maven to force the use of the amd64 binary for Windows.

Alternatively, you can build protoc yourself. Refer to the protobufCompiler parameter documentation on the goals page for how you can override the binary being used.

BSDs, Linux on unsupported CPUs, MINIX, Solaris, etc

Your best bet is to use a prebuilt version of protoc for your platform if provided by your package vendor. Alternatively, you could try binfmt emulation or QEMU emulation and pass the -Dos.arch=aarch64 -Dos.name=Linux flag.

Refer to the protocVersion parameter documentation on the goals page for how you can override the binary being used.

You may also try something like docker buildx and use a cross-platform container to build on the desired platform. Virtual machines are also an option.