zhangkun83 | 65858d5 | 2015-03-30 10:51:13 -0700 | [diff] [blame] | 1 | # Build scripts that publish pre-compiled protoc artifacts |
| 2 | ``protoc`` is the compiler for ``.proto`` files. It generates language bindings |
| 3 | for the messages and/or RPC services from ``.proto`` files. |
| 4 | |
| 5 | Because ``protoc`` is a native executable, the scripts under this directory |
| 6 | build and publish a ``protoc`` executable (a.k.a. artifact) to Maven |
zhangkun83 | 9f4d9c6 | 2015-03-30 10:57:00 -0700 | [diff] [blame] | 7 | repositories. The artifact can be used by build automation tools so that users |
| 8 | would not need to compile and install ``protoc`` for their systems. |
| 9 | |
| 10 | ## Versioning |
| 11 | The version of the ``protoc`` artifact must be the same as the version of the |
| 12 | Protobuf project. |
zhangkun83 | 65858d5 | 2015-03-30 10:51:13 -0700 | [diff] [blame] | 13 | |
| 14 | ## Artifact name |
| 15 | The name of a published ``protoc`` artifact is in the following format: |
| 16 | ``protoc-<version>-<os>-<arch>.exe``, e.g., ``protoc-3.0.0-alpha-3-windows-x86_64.exe``. |
| 17 | |
zhangkun83 | f162ee5 | 2015-03-30 11:02:02 -0700 | [diff] [blame^] | 18 | ## System requirement |
| 19 | These scripts only work under Unix-like environments, e.g., Linux, MacOSX, and |
| 20 | Cygwin or MinGW for Windows. Please see ``README.md`` of the Protobuf project |
| 21 | for how to set up the build environment. |
| 22 | |
zhangkun83 | 65858d5 | 2015-03-30 10:51:13 -0700 | [diff] [blame] | 23 | ## To install artifacts locally |
| 24 | The following command will install the ``protoc`` artifact to your local Maven repository. |
| 25 | ``` |
| 26 | $ ./gradlew install |
| 27 | ``` |
| 28 | |
| 29 | ## To push artifacts to Maven Central |
| 30 | Before you can upload artifacts to Maven Central repository, you must have [set |
| 31 | up your account with OSSRH](http://central.sonatype.org/pages/ossrh-guide.html), |
| 32 | and have [generated a PGP key](http://gradle.org/docs/current/userguide/signing_plugin.html) |
| 33 | for siging. You need to put your account information and PGP key information |
| 34 | in ``$HOME/.gradle/gradle.properties``, e.g.: |
| 35 | ``` |
| 36 | signing.keyId=24875D73 |
| 37 | signing.password=secret |
| 38 | signing.secretKeyRingFile=/Users/me/.gnupg/secring.gpg |
| 39 | |
| 40 | ossrhUsername=your-jira-id |
| 41 | ossrhPassword=your-jira-password |
| 42 | ``` |
| 43 | |
| 44 | Use the following command to upload artifacts: |
| 45 | ``` |
| 46 | $ ./gradlew uploadArchives |
| 47 | ``` |
| 48 | |