-
Notifications
You must be signed in to change notification settings - Fork 9.4k
Getting Started Developing
If you just need a pre-built JAR file, you can always find compiled resources from the Maven release repository, including recent snapshot/nightly builds.
Download the latest release, or, retrieve the latest source code from Github.
The code is organized into several subdirectories, corresponding to modules, like core/
and javase/
. Within each Java-based module, there is a pom.xml
file for use with Apache Maven.
A few configuration steps are needed, depending on which modules you want to build. From the directory where you unpacked or checked out the source code:
The Android SDK must be installed of course. Run the tool called android
and ensure that platform support for the Android releases targeted by the Andrdoid app(s) you're interested in are installed. At the time of this writing, for the Barcode Scanner app in android/
, that's platform level 22 / Android 5.1.
export ANDROID_HOME=/change/this/path/to/android-sdk
From the root of the project, run mvn install
to compile, test and assemble all modules. Add -DskipTests
to skip unit tests. Note that Android-related modules and apps will not be built unless ANDROID_HOME
is set.
Compiled .jar
files are found in submodules after this. For example, the compiled core/
code is available at core/target/core-x.y.z.jar
.
To build the Barcode Scanner Android app, a few slightly different steps are needed. From android/
, run mvn package android:apk
to produce a compile .apk
file in target
. Use android-x.y.z-aligned.apk
.
Other users will not be able to build the signed release version, but the command is: mvn -Pandroid-release -Djarsigner.storepass=... -Djarsigner.keypass=... clean package android:apk
.
Being Android apps as well, the ZXing Test and Barcode Scanner for Google Glass application APKs are built similarly to android/
.
Note that the deployable .war
file will be produced in the target/
directory.
Most components are libraries and are not run directly.
- Build
android/
- Connect your device via USB
- If you already have the standard version of Barcode Scanner installed, uninstall it
- Make sure your device is set to allow apps from untrusted sources
- Run
mvn android:deploy
.
After building, in the javase/
directory, execute mvn -DskipTests package assembly:single
to create a single JAR file containing all classes needed to run client command line apps, as target/javase-x.y.z-jar-with-dependencies.jar
. Run CommandLineRunner
with simply:
java -jar target/javase-x.y.z-jar-with-dependencies.jar [URL | FILE]
Path syntax is different on Windows. Here and elsewhere you will need to use ';' rather than ':' to separate classpath elements, and likely need to use the '' path separator.
core/
, javase/
, android-integration
and zxingorg
can be used directly in a Maven-based project without any download or installation. Instead, add as dependencies from groupID com.google.zxing
artifactIDs core
, javase
, android-integration
or zxingorg
:
<dependencies>
...
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>(the current version)</version>
</dependency>
</dependencies>
- For the three apps (
android
,androidtest
,glass
), update theirparent
version to be the upcoming release and commit locally - Make sure
CHANGES
is up to date and everything is committed - Update the current milestone in Github as needed and close it
-
unset ANDROID_HOME
so as to not release Android apps -
mvn -s private-settings.xml clean release:clean release:prepare
and optionally add-DreleaseVersion=x.y.z -DdevelopmentVersion=a.b.c-SNAPSHOT
if the answer is not the one Maven guesses and you want to avoid repeating the answer - If all is well,
mvn -Darguments="-Dgpg.passphrase=..." -s private-settings.xml release:perform
- Log in to
oss.sonatype.org
and finish the release (http://central.sonatype.org/pages/releasing-the-deployment.html). - Update the release on Github
- Announce the release on the mailing list
- To immediately publish a next snapshot,
mvn -s private-settings.xml clean deploy
- To get the site ready, first go back to the tag,
git checkout -f tags/zxing-x.y.z
mvn clean site
mvn site:stage site:deploy -pl .
git add docs
- You may wish to
git status
to ensure that all the changes are indocs/
and that they make sense git commit -m 'Update site for x.y.z'
git push origin master
- Sync with
git checkout -f master
andgit pull