Upgrading dependency to Thrift 0.12.0

This commit is contained in:
Renan DelValle 2018-11-27 18:03:50 -08:00
parent 3e4590dcc0
commit 356978cb42
No known key found for this signature in database
GPG key ID: C240AD6D6F443EC9
1302 changed files with 101701 additions and 26784 deletions

View file

@ -20,18 +20,59 @@ KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
Using Thrift with Java
======================
Building and installing from source
===================================
When using a CMake build from the source distribution on Linux the
easiest way to build and install is this simple command line:
make all && sudo make install/fast
It is important to use the install/fast option to eliminate
the automatic rebuild by dependency that causes issues because
the build tooling is designed to work with cached files in the
user home directory during the build process. Instead this builds
the code in the expected local build tree and then uses CMake
install code to copy to the target destination.
Building Thrift with Gradle without CMake/Autoconf
==================================================
The Thrift Java source is not build using the GNU tools, but rather uses
the Apache Ant build system, which tends to be predominant amongst Java
the Gradle build system, which tends to be predominant amongst Java
developers.
To compile the Java Thrift libraries, simply do the following:
ant
./gradlew
Yep, that's easy. Look for libthrift.jar in the base directory.
Yep, that's easy. Look for libthrift-<version>.jar in the build/libs directory.
The default build will run the unit tests which expect a usable
Thrift compiler to exist on the system. You have two choices for
that.
* Build the Thrift executable from source at the default
location in the source tree. The project is configured
to look for it there.
* Install the published binary distribution to have Thrift
executable in a known location and add the path to the
~/.gradle/gradle.properties file using the property name
"thrift.compiler". For example this would set the path in
a Windows box if Thrift was installed under C:\Thrift
thrift.compiler=C:/Thrift/thrift.exe
To just build the library without running unit tests you simply do this.
./gradlew assemble
To install the library in the local Maven repository location
where other Maven or Gradle builds can reference it simply do this.
./gradlew install
The library will be placed in your home directory under .m2/repository
To include Thrift in your applications simply add libthrift.jar to your
classpath, or install if in your default system classpath of choice.
@ -39,15 +80,84 @@ classpath, or install if in your default system classpath of choice.
Build Thrift behind a proxy:
ant -Dproxy.enabled=1 -Dproxy.host=myproxyhost -Dproxy.user=thriftuser -Dproxy.pass=topsecret
./gradlew -Dhttp.proxyHost=myproxyhost -Dhttp.proxyPort=8080 -Dhttp.proxyUser=thriftuser -Dhttp.proxyPassword=topsecret
or via
./configure --with-java ANT_FLAGS='-Dproxy.enabled=1 -Dproxy.host=myproxyhost -Dproxy.user=thriftuser -Dproxy.pass=topsecret'
./configure --with-java GRADLE_OPTS='-Dhttp.proxyHost=myproxyhost -Dhttp.proxyPort=8080 -Dhttp.proxyUser=thriftuser -Dhttp.proxyPassword=topsecret'
Unit Test HTML Reports
======================
The build will automatically generate an HTML Unit Test report. This can be found
under build/reports/tests/test/index.html. It can be viewed with a browser
directly from that location.
Clover Code Coverage for Thrift
===============================
The build will optionally generate Clover Code coverage if the Gradle property
`cloverEnabled=true` is set in ~/.gradle/gradle.properties or on the command line
via `-PcloverEnabled=true`. The generated report can be found under the location
build/reports/clover/html/index.html. It can be viewed with a browser
directly from that location. Additionally, a PDF report is generated and is found
under the location build/reports/clover/clover.pdf.
The following command will build, unit test, and generate Clover reports:
./gradlew -PcloverEnabled=true
Publishing Maven Artifacts to Maven Central
===========================================
The Automake build generates a Makefile that provides the correct parameters
when you run the build provided the configure.ac has been set with the correct
version number. The Gradle build will receive the correct value for the build.
The same applies to the CMake build, the value from the configure.ac file will
be used if you execute these commands:
make maven-publish -- This is for an Automake Linux build
make MavenPublish -- This is for a CMake generated build
The uploadArchives task in Gradle is preconfigured with all necessary details
to sign and publish the artifacts from the build to the Apache Maven staging
repository. The task requires the following externally provided properties to
authenticate to the repository and sign the artifacts. The preferred approach
is to create or edit the ~/.gradle/gradle.properties file and add the following
properties to it.
# Signing key information for artifacts PGP signature (values are examples)
signing.keyId=24875D73
signing.password=secret
signing.secretKeyRingFile=/Users/me/.gnupg/secring.gpg
# Apache Maven staging repository user credentials
mavenUser=meMyselfAndI
mavenPassword=MySuperAwesomeSecretPassword
It is also possible to manually publish using the Gradle build directly.
With the key information and credentials in place the following will generate
if needed the build artifacts and proceed to publish the results.
./gradlew -Prelease=true -Pthrift.version=0.11.0 uploadArchives
It is also possible to override the target repository for the Maven Publication
by using a Gradle property, for example you can publish signed JAR files to your
company internal server if you add this to the command line or in the
~/.gradle/gradle.properties file. The URL below assumes a Nexus Repository.
maven-repository-url=https://my.company.com/service/local/staging/deploy/maven2
Or the same on the command line:
./gradlew -Pmaven-repository-url=https://my.company.com/service/local/staging/deploy/maven2 -Prelease=true -Pthrift.version=0.11.0 uploadArchives
Dependencies
============
Apache Ant
http://ant.apache.org/
Gradle
http://gradle.org/