Currently, MXNet were built along with different language bindings such as Scala. However, as a software design aspective, Python and Scala are cosumer of MXNet itself. Any language binding should build on top of its own distribution. In that case, it will be easier for user to switch between different mxnet versions and language binding versions. Considering the fact that MXNet are available for more platforms, we cannot create each of them a single Scala package.

Tensorflow currently publish their distribution jar with only so files in. It widely used for customers for Andriod, Arm and all different platforms. 


We are going to publish standalone maven packages for MXNet native library (

Packages to release

  • All these native packages will be released under maven groupId: org.apache.mxnet
  • Each cuda and mkl varieties will have their own artifact id
  • Different operating system will share the same artifact id, with specific classifiers:
    • linux-x86_64
    • osx-x86_64
    • win-x86_64
    • linux-arm

artifactIdpip release nameTypeLinuxOSXWindowsAndroid

Layout in release jar

Native shared libraries

  • Each mxnet shared library should use platform specific file name extension.
  • Besides libmxnet, other dependencies should also be packaged into .jar file
  • cuda library will NOT be part of the jar.

Location in the jar

All shared libraries will be put under /native/lib folder.

Properties file

The shared libraries must be cached on disk first at java runtime. To improve native library loading performance and error case validation, we added a file int /native/lib folder.

The properties file contains following information:

  1. version: the version with build number that can unique identify each mxnet native library build.
  2. libraries: a comma delimited list of all files need to be cached on disk.

Here list files for each jar




Following is a sample pom.xml file for consuming mxnet native library

<project xmlns=""



  • No labels