I need to write some backup software for our hosted Google Apps, so as we’re a Java shop I’m going to be using the Java API. Also we’re heavy users of Hudson and Maven so want to get the checked out source building with that.
There is a Google Code project called google-apis-mavenized which looks like it has done most of the work for us, but it does not build when it’s checked out.
rus@builder:/proxy/rus$ svn checkout https://google-apis-mavenized.googlecode.com/svn/trunk/gdata-mavenized/ gdata-mavenized
rus@builder:/proxy/rus/$ cd gdata-mavenized
rus@builder:/proxy/rus/gdata-mavenized$ mvn install
/proxy/rus/gdata-mavenized/gdata-apis/client/src/main/java/com/google/gdata/data/extensions/ExtendedProperty.java:[20,31] cannot find symbol
symbol : class CoreErrorDomain
location: package com.google.gdata.client
After some investigation the gdata-mavenized project symlinks in files from the original gData project, but presumably due to the API constantly changing, the maintainers of google-apis-mavenized got bored or fed up so didn’t symlink in newer files.
A really quick way to fix this is simply to delete the main google directory that contains all the symlinks, and just symlink that back to the real directory that contains all the source files!
rus@builder:/proxy/rus/gdata-mavenized/gdata-apis/client/src/main/java/com$ rm -rf google/
rus@builder:/proxy/rus/gdata-mavenized/gdata-apis/client/src/main/java/com$ ln -s ../../../../../../gdata-external/java/src/com/google/ .
Bamo, problem solved!
rus@builder:/proxy/rus/gdata-mavenized$ mvn install
[INFO] Scanning for projects…
[INFO] Reactor build order:
[INFO] google-gdata-mavenized-1-SNAPSHOT
[INFO] google-gdata-apis:1-SNAPSHOT
[INFO] gdata-client:1-SNAPSHOT
[INFO] gdata-appsforyourdomain:1-SNAPSHOT
[INFO] gdata-base:1-SNAPSHOT
[INFO] gdata-calendar:1-SNAPSHOT
[INFO] gdata-codesearch-1-SNAPSHOT
[INFO] gdata-photos:1-SNAPSHOT
[INFO] gdata-spreadsheet:1-SNAPSHOT
[INFO] gdata-docs:1-SNAPSHOT
[INFO] samples-1-SNAPSHOT
[INFO] sample-util-1-SNAPSHOT
[INFO] sample-appsforyourdomain-client-1-SNAPSHOT
[INFO] sample-authsub-webapp-1-SNAPSHOT
[INFO] sample-blogger-client-1-SNAPSHOT
[INFO] sample-calendar-client-1-SNAPSHOT
[INFO] sample-codesearch-client-1-SNAPSHOT
[INFO] sample-photos-client-1-SNAPSHOT
[INFO] sample-tester-client-1-SNAPSHOT
[INFO] ————————————————————————
[INFO] Reactor Summary:
[INFO] ————————————————————————
[INFO] google-gdata-mavenized-1-SNAPSHOT ………………… SUCCESS [11.711s]
[INFO] google-gdata-apis:1-SNAPSHOT …………………….. SUCCESS [0.152s]
[INFO] gdata-client:1-SNAPSHOT …………………………. SUCCESS [1:02.902s]
[INFO] gdata-appsforyourdomain:1-SNAPSHOT ……………….. SUCCESS [2.881s]
[INFO] gdata-base:1-SNAPSHOT …………………………… SUCCESS [2.021s]
[INFO] gdata-calendar:1-SNAPSHOT ……………………….. SUCCESS [2.365s]
[INFO] gdata-codesearch-1-SNAPSHOT ……………………… SUCCESS [1.397s]
[INFO] gdata-photos:1-SNAPSHOT …………………………. SUCCESS [3.297s]
[INFO] gdata-spreadsheet:1-SNAPSHOT …………………….. SUCCESS [1.912s]
[INFO] gdata-docs:1-SNAPSHOT …………………………… SUCCESS [1.773s]
[INFO] samples-1-SNAPSHOT ……………………………… SUCCESS [0.173s]
[INFO] sample-util-1-SNAPSHOT ………………………….. SUCCESS [1.304s]
[INFO] sample-appsforyourdomain-client-1-SNAPSHOT ………… SUCCESS [1.651s]
[INFO] sample-authsub-webapp-1-SNAPSHOT …………………. SUCCESS [24.340s]
[INFO] sample-blogger-client-1-SNAPSHOT …………………. SUCCESS [1.466s]
[INFO] sample-calendar-client-1-SNAPSHOT ………………… SUCCESS [0.355s]
[INFO] sample-codesearch-client-1-SNAPSHOT ………………. SUCCESS [1.396s]
[INFO] sample-photos-client-1-SNAPSHOT ………………….. SUCCESS [1.192s]
[INFO] sample-tester-client-1-SNAPSHOT ………………….. SUCCESS [1.656s]
[INFO] ————————————————————————
[INFO] ————————————————————————
[INFO] BUILD SUCCESSFUL
[INFO] ————————————————————————
[INFO] Total time: 2 minutes 6 seconds
[INFO] Finished at: Wed Apr 15 12:40:25 BST 2009
[INFO] Final Memory: 19M/45M
[INFO] ————————————————————————
rus@builder:/proxy/rus/gdata-mavenized$ find . -name *.jar
./gdata-samples/codesearch/target/sample-codesearch-client-1-SNAPSHOT.jar
./gdata-samples/authsub/target/authsub_sample/WEB-INF/lib/gdata-calendar-1-SNAPSHOT.jar
./gdata-samples/authsub/target/authsub_sample/WEB-INF/lib/gdata-client-1-SNAPSHOT.jar
./gdata-samples/appsforyourdomain/target/sample-appsforyourdomain-client-1-SNAPSHOT.jar
./gdata-samples/util/target/sample-util-1-SNAPSHOT.jar
./gdata-samples/tester/target/sample-tester-client-1-SNAPSHOT.jar
./gdata-samples/calendar/target/sample-calendar-client-1-SNAPSHOT.jar
./gdata-samples/photos/target/sample-photos-client-1-SNAPSHOT.jar
./gdata-samples/blogger/target/sample-blogger-client-1-SNAPSHOT.jar
./gdata-apis/codesearch/target/gdata-codesearch-1.0.jar
./gdata-apis/appsforyourdomain/target/gdata-appsforyourdomain-1.0.jar
./gdata-apis/base/target/gdata-base-1.0.jar
./gdata-apis/spreadsheet/target/gdata-spreadsheet-1.0.jar
./gdata-apis/docs/target/gdata-docs-1.0.jar
./gdata-apis/calendar/target/gdata-calendar-1.0.jar
./gdata-apis/client/target/gdata-client-1.0.jar
./gdata-apis/photos/target/gdata-photos-1.0.jar
./gdata-external/java/sample/codesearch/lib/CodeSearchClient.jar
./gdata-external/java/sample/appsforyourdomain/lib/AppsForYourDomainClient.jar
./gdata-external/java/sample/util/lib/sample-util.jar
./gdata-external/java/sample/spreadsheet/lib/GUIDemo.jar
./gdata-external/java/sample/spreadsheet/lib/IndexClient.jar
./gdata-external/java/sample/spreadsheet/lib/ImportClient.jar
./gdata-external/java/sample/spreadsheet/lib/ListDemo.jar
./gdata-external/java/sample/spreadsheet/lib/CellDemo.jar
./gdata-external/java/sample/tester/lib/TesterClient.jar
./gdata-external/java/sample/gbase/lib/gdata-base-cmdline.jar
./gdata-external/java/sample/calendar/lib/CalendarClient.jar
./gdata-external/java/sample/photos/lib/PhotosClient.jar
./gdata-external/java/lib/gdata-client-1.0.jar
./gdata-external/java/lib/gdata-appsforyourdomain-1.0.jar
./gdata-external/java/lib/gdata-spreadsheet-1.0.jar
./gdata-external/java/lib/gdata-base-1.0.jar
./gdata-external/java/lib/gdata-calendar-1.0.jar
./gdata-external/java/lib/gdata-codesearch-1.0.jar
./gdata-external/java/lib/gdata-photos-1.0.jar
Woohoo!