• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..19-Dec-2018-

android/H19-Dec-2018-5851

code_quality_tools/H19-Dec-2018-5234

gradle/H19-Dec-2018-775645

src/org/apache/thrift/H19-Dec-2018-16,5479,168

test/H03-May-2022-8,2305,634

Makefile.amH A D19-Dec-20181.9 KiB7346

README.mdH A D19-Dec-20186.2 KiB164112

build.gradleH A D19-Dec-20182 KiB6556

coding_standards.mdH A D19-Dec-201867 21

gradle.propertiesH A D19-Dec-2018981 3427

gradlewH A D19-Dec-20185.2 KiB173128

gradlew.batH A D19-Dec-20182.1 KiB8561

settings.gradleH A D19-Dec-2018836 2119

README.md

1Thrift Java Software Library
2
3License
4=======
5
6Licensed to the Apache Software Foundation (ASF) under one
7or more contributor license agreements. See the NOTICE file
8distributed with this work for additional information
9regarding copyright ownership. The ASF licenses this file
10to you under the Apache License, Version 2.0 (the
11"License"); you may not use this file except in compliance
12with the License. You may obtain a copy of the License at
13
14  http://www.apache.org/licenses/LICENSE-2.0
15
16Unless required by applicable law or agreed to in writing,
17software distributed under the License is distributed on an
18"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
19KIND, either express or implied. See the License for the
20specific language governing permissions and limitations
21under the License.
22
23Building and installing from source
24===================================
25
26When using a CMake build from the source distribution on Linux the
27easiest way to build and install is this simple command line:
28
29    make all && sudo make install/fast
30
31It is important to use the install/fast option to eliminate
32the automatic rebuild by dependency that causes issues because
33the build tooling is designed to work with cached files in the
34user home directory during the build process. Instead this builds
35the code in the expected local build tree and then uses CMake
36install code to copy to the target destination.
37
38Building Thrift with Gradle without CMake/Autoconf
39==================================================
40
41The Thrift Java source is not build using the GNU tools, but rather uses
42the Gradle build system, which tends to be predominant amongst Java
43developers.
44
45To compile the Java Thrift libraries, simply do the following:
46
47    ./gradlew
48
49Yep, that's easy. Look for libthrift-<version>.jar in the build/libs directory.
50
51The default build will run the unit tests which expect a usable
52Thrift compiler to exist on the system. You have two choices for
53that.
54
55* Build the Thrift executable from source at the default
56  location in the source tree. The project is configured
57  to look for it there.
58* Install the published binary distribution to have Thrift
59  executable in a known location and add the path to the
60  ~/.gradle/gradle.properties file using the property name
61  "thrift.compiler". For example this would set the path in
62  a Windows box if Thrift was installed under C:\Thrift
63
64    thrift.compiler=C:/Thrift/thrift.exe
65
66To just build the library without running unit tests you simply do this.
67
68    ./gradlew assemble
69
70To install the library in the local Maven repository location
71where other Maven or Gradle builds can reference it simply do this.
72
73    ./gradlew install
74
75The library will be placed in your home directory under .m2/repository
76
77To include Thrift in your applications simply add libthrift.jar to your
78classpath, or install if in your default system classpath of choice.
79
80
81Build Thrift behind a proxy:
82
83    ./gradlew -Dhttp.proxyHost=myproxyhost -Dhttp.proxyPort=8080 -Dhttp.proxyUser=thriftuser -Dhttp.proxyPassword=topsecret
84
85or via
86
87    ./configure --with-java GRADLE_OPTS='-Dhttp.proxyHost=myproxyhost -Dhttp.proxyPort=8080 -Dhttp.proxyUser=thriftuser -Dhttp.proxyPassword=topsecret'
88
89
90Unit Test HTML Reports
91======================
92
93The build will automatically generate an HTML Unit Test report. This can be found
94under build/reports/tests/test/index.html. It can be viewed with a browser
95directly from that location.
96
97
98Clover Code Coverage for Thrift
99===============================
100
101The build will optionally generate Clover Code coverage if the Gradle property
102`cloverEnabled=true` is set in ~/.gradle/gradle.properties or on the command line
103via `-PcloverEnabled=true`. The generated report can be found under the location
104build/reports/clover/html/index.html. It can be viewed with a browser
105directly from that location. Additionally, a PDF report is generated and is found
106under the location build/reports/clover/clover.pdf.
107
108The following command will build, unit test, and generate Clover reports:
109
110    ./gradlew -PcloverEnabled=true
111
112
113Publishing Maven Artifacts to Maven Central
114===========================================
115
116The Automake build generates a Makefile that provides the correct parameters
117when you run the build provided the configure.ac has been set with the correct
118version number. The Gradle build will receive the correct value for the build.
119The same applies to the CMake build, the value from the configure.ac file will
120be used if you execute these commands:
121
122    make maven-publish   -- This is for an Automake Linux build
123    make MavenPublish    -- This is for a CMake generated build
124
125The uploadArchives task in Gradle is preconfigured with all necessary details
126to sign and publish the artifacts from the build to the Apache Maven staging
127repository. The task requires the following externally provided properties to
128authenticate to the repository and sign the artifacts. The preferred approach
129is to create or edit the ~/.gradle/gradle.properties file and add the following
130properties to it.
131
132    # Signing key information for artifacts PGP signature (values are examples)
133    signing.keyId=24875D73
134    signing.password=secret
135    signing.secretKeyRingFile=/Users/me/.gnupg/secring.gpg
136
137    # Apache Maven staging repository user credentials
138    mavenUser=meMyselfAndI
139    mavenPassword=MySuperAwesomeSecretPassword
140
141It is also possible to manually publish using the Gradle build directly.
142With the key information and credentials in place the following will generate
143if needed the build artifacts and proceed to publish the results.
144
145    ./gradlew -Prelease=true -Pthrift.version=0.11.0 uploadArchives
146
147It is also possible to override the target repository for the Maven Publication
148by using a Gradle property, for example you can publish signed JAR files to your
149company internal server if you add this to the command line or in the
150~/.gradle/gradle.properties file. The URL below assumes a Nexus Repository.
151
152    maven-repository-url=https://my.company.com/service/local/staging/deploy/maven2
153
154Or the same on the command line:
155
156    ./gradlew -Pmaven-repository-url=https://my.company.com/service/local/staging/deploy/maven2 -Prelease=true -Pthrift.version=0.11.0 uploadArchives
157
158
159Dependencies
160============
161
162Gradle
163http://gradle.org/
164