I have a cable TV first time in years!!!

I can BRAIN-ROT all days long now! ... I just need big TV now.








As an Amazon Associate I earn from qualifying purchases.

Test your Internet speed in Chicago

http://chicago.speedtest.comcast.net/speedtest/index.html



As an Amazon Associate I earn from qualifying purchases.

Apple Wheel

This is too funny of the Apple parody not to post it....



As an Amazon Associate I earn from qualifying purchases.

Using the gwt KeyHandler instead of KeyboardListener

private void listenToSearch(final CustomTextBox searchBox)
{
searchBox.addKeyDownHandler(new KeyDownHandler()
{

public void onKeyDown(KeyDownEvent event)
{
if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER)
{
search(searchBox);
}

}
});
}


As an Amazon Associate I earn from qualifying purchases.

Using the gwt ClickHandler instead of TableListener

private ClickHandler listenToTableClick(final FlexTable table)
{
return new ClickHandler()
{

public void onClick(ClickEvent event)
{
//instead of casting the former sender as a FlexTable, use the original table

Cell cell = table.getCellForEvent(event);
int row = cell.getRowIndex();
int col = cell.getCellIndex();

//original code here

}
}


As an Amazon Associate I earn from qualifying purchases.

iPhone and other mobile devices hacked via SMS

http://www.forbes.com/2009/07/28/hackers-iphone-apple-technology-security-hackers.html


As an Amazon Associate I earn from qualifying purchases.

French onion soup

Just in case you wonder... taste like heaven!


Recipe:

1. thinly slice a lot of onions into a big pot

2. mix it with butter (spoon or so) and let it marinate

3. add beef broth

4. add a lot of spices (all spice, mint, basil, dill, etc.),

5. add few sliced potatoes

6. cook long time with 1/3 bottle of Sherry (I used cream sherry)

7. when serving toast the slice of baguette and sharp cheese (mozzarella, jack cheese)

8. serve with a glass of sherry to complement the bouquet



As an Amazon Associate I earn from qualifying purchases.

AppEngine Date field editing


When you have a Java Date field in the AppEngine JDO and try to enter the new value using the Google Web interface:
Data Viewer -> Edit Entity or Create an Entity


you may be getting this error: "Could not instantiate int: invalid literal"


I think this is a bug, as this field should be a Date, not an int, but there is a simple work-around:
1) change the int to null, then save
2) change the null to gd:when and you can enter a date in the format 2009-07-29 20:36:17.565000




As an Amazon Associate I earn from qualifying purchases.

Using the appengine database

Google has a nice short document on how to get started using the appengine database using JDO. http://code.google.com/appengine/docs/java/gettingstarted/usingdatastore.html


As an Amazon Associate I earn from qualifying purchases.

Mouse Button Click

If you need to determine which button is clicked on a mouse with a ClickHandler, you can use the NativeEvent class. Here is code that determines whether or not the ClickHandler was trigger by a right click or not (event is ClickEvent):

if(event.getNativeEvent().getButton() == NativeEvent.BUTTON_RIGHT)

{

GWT.log("Right Click", null);

}

else

{

GWT.log("Left Click", null);

}



As an Amazon Associate I earn from qualifying purchases.

At Pazzo rooftop cafe with guys

Suprise, Kenosha has a classy place like that


As an Amazon Associate I earn from qualifying purchases.

smartclient.com GWT

There is a nice showcase of GWT widgets:




As an Amazon Associate I earn from qualifying purchases.

GWT 1.6: "removeClickHandler" solution

GWT 1.6 changed all Listeners to Handlers and in the process setup a few different practices. One possibility with GWT before 1.6 was to add a ClickListener to a FocusPanel and then remove it by calling the method removeClickListener(ClickListener listener). But, in 1.6 this is not an option with Handlers. There is no removeClickHandler(). Instead, when you add a handler to a widget, it returns an instance of HandlerRegistration. This can then be used to remove that handler. Here is an example of a handler being adding then removed:

FocusPanel focus = new FocusPanel();

HandlerRegistration registration = focus.addClickHandler(new ClickHandler()

{

public void onClick(ClickEvent event)

{

// Panel has been clicked

}

});

registration.removeHandler();



As an Amazon Associate I earn from qualifying purchases.

KeyPressEvent: Getting the key code

There is a new way to get what keys are pressed in GWT 1.6. Now KeyPressHandler is used to listen to a TextBox:

TextBox box = new TextBox();
box.addKeyPressHandler(new KeyPressHandler()
{
public void onKeyPress(KeyPressEvent event)
{
// Listen to key event
}
});


You can use event.getCharCode() to get the character that was pressed, but in order to get the key code (int) that was pressed you need to use the following method:

event.getNativeEvent().getKeyCode()


So here is code to listen to when the "Enter" key is pressed:

TextBox box = new TextBox();
box.addKeyPressHandler(new KeyPressHandler()
{
public void onKeyPress(KeyPressEvent event)
{
if (KeyCodes.KEY_ENTER == event.getNativeEvent().getKeyCode())
{
System.out.println("Enter key has been pressed");
}
}
});


As an Amazon Associate I earn from qualifying purchases.

Apple Tablet

Mashable.com wrote that Apple may release a new 10-inch Tablet in September for the Christmas season. 

They included some Photoshopped images of what it might look like:


As an Amazon Associate I earn from qualifying purchases.

Zion beach



As an Amazon Associate I earn from qualifying purchases.

Lingo widget now works on iPhone



From your iPhone open:
http://lingo-widget.appspot.com




As an Amazon Associate I earn from qualifying purchases.

Lingo-widget: share it on your own site, or blog

Just paste this code in your HTML page:

<iframe src="http://lingo-widget.appspot.com/" width="320" height="360"><br /> <p>Your browser does not support iframes.</p><br /></iframe><span class="Apple-style-span" style="font-size: large;">


As an Amazon Associate I earn from qualifying purchases.

Lingo-widget: how to submit your own recordings?

These comments are about the Lingo-widget in the LEFT MARGIN.

Send me your native language recordings so others can learn from you.

1) Record the voice Memo on the iPhone.
Please limit it to a short, single phrase, or sentence.
I would prefer if you were the native speaker of the recording.


After recording click on the list button on the right.

2) Listen to the recording and if you are satisfied click "Share"


3) Address it to UkiDLucas@mac.com
In the email subject line indicate the language of the recording (French FR)
and the correct spelling of the phrase.
Additionally you should ad explanation in English what the phrase means.



No obscenities and bad language are allowed, if you submit such recording you will be banned from the website.
Only recordings by the person submitting should sent.
Average recording is about 50 kb, so they are very small.
I will try to process and add your phrase within 48 hours.

Please post a lot of comments and suggestions.






As an Amazon Associate I earn from qualifying purchases.

Nikon D40

Today, I got a new Nikon D40, my old D50 has a broken screen, which still makes it usable, but it is not too much fun, since you cannot see the pictures and I like to experiment a lot.

The nicest things about D40 is the wide angle 18-55 mm lens (I know it is silly, I could buy just the lens), otherwise D50 is superior with its internal lens focusing motor which works with my old lenses.


As far as functions I need the following all manual: S, A, M, (basically shutter speed, aperture and ISO) so the fancy cameras with a lot of options make no difference to me, more primitive and simpler the better. Oh, Nikon D60 has sensor cleaning, which I would like to have, my old D50 has an annoying dust spot on all pictures.

I don't care for mega-pixels at all, they just eat the memory, however I do shoot in RAW just in case I get something really good, JPG compression is fine for Web, but it decreases the quality rapidly. I don't need more than 4.5 Mega pix, Nikon D40 has 6 Mega pix, Nikon D60 has 12 Mega pix and who cares!

In the picture below you can see the bird ("The Dove") that was taken with my Nikon D50 (4.5 mp) and the enlargement looks just fine to me:





As an Amazon Associate I earn from qualifying purchases.

Slow food



I am a big proponent of "slow food." 

At work, current and previous, I always tried to get people out for lunch, sit down, and have a good meal. 
I hate "brown bags," I never go to a drive-thru, and I don't like order-in food at work or home. 
I like quality food, not too fancy but served esthetically—I love to cook for friends myself, and I like to make wines.

Today, when I got this picture of Lili, I realized how much I miss the European feel of Quebec, with restaurants, cafe shops, and good bakeries on every street corner, where life and food are good. 

I went for lunch to the only French bistro in the area, Cafe Pyrenees, in Libertyville, IL, about 6 miles away, only to learn that they are closed until 5 p.m.


Having said that, I also realize that it has been a week since I came back from Quebec, and I did not cook once, not even tea, which I love to drink so often. 

I was wandering around the supermarket. I read picture cards about a dozen fish they were selling. I finally knew what Tilapia and Halibut look like and where they come from. I walked out with a couple of bread rolls and a coffee cake. 

It's pathetic, but I just have no energy or motivation.
















Cafe Pyrenees link


As an Amazon Associate I earn from qualifying purchases.

Alerting Visitors when JavaScript is Disabled

The web site we're developing is JavaScript based, so we need to warn users if they come to our site with JavaScript disabled. The easiest way to do this is to use the HTML <noscript> tag (http://www.w3schools.com/TAGS/tag_noscript.asp).

For example:

<head>
<script ...
</script>
</head>
<body>
<script ...></script>
<noscript>
<div class="noscript-warning">
<h1>Please turn on JavaScript to use this site.</h1>
<p>
It seems that you have JavaScript turned off. You will need
to turn it on in order to use this site.
</p>
</div>
</noscript>
</body>

The contents of the <noscript> tag will only be displayed when JavaScript is disabled. When JavaScript is enabled, the tag and its contents will not be displayed at all.



As an Amazon Associate I earn from qualifying purchases.

"Cherry Blossoms" - Hanami

Tonight, I watched "Cherry Blossoms" - Hanami, the most beautiful, romantic movie ever.
















As an Amazon Associate I earn from qualifying purchases.

Google Wave beyond the sandbox

On September 30, 2009, Google is planning to make the Google Wave available beyond the current developer's sandbox to additional 100,000 users.


In the meanwhile, if you want to see Google Wave in action, come to the Chicago Google Technology User Group conference:



As an Amazon Associate I earn from qualifying purchases.

Photos from Quebec





As an Amazon Associate I earn from qualifying purchases.

Video: Android 103

http://blip.tv/play/AYGQ7EGTsCI

the link is outdated.


As an Amazon Associate I earn from qualifying purchases.

JavaScript: browser type and version detection

To check for a specific browser type and version and display a popup, include below code in HTML page:
<script>
if (navigator.userAgent.toLowerCase().match("safari") && navigator.userAgent.toLowerCase().match("version/4")) {
window.alert("Detected Safari 4 browser!!");
}
</script>



As an Amazon Associate I earn from qualifying purchases.

Re: [gtug-managers] Gain potential members...

It is really not difficult to get a LOT of people attending your GTUG....

Create an Event Brite account:
http://chicago-gtug.eventbrite.com/

Create a Meetup.com account:
http://www.meetup.com/chicago-google/

Create a Facebook account:
http://www.facebook.com/group.php?gid=57657640517

Have people following you on Twitter using your specific hashtag (our is #ChiGTUG):
http://twitter.com/#search?q=ChiGTUG


On Jul 21, 2009, at 11:36 PM, A. wrote:

>
> Hi.
>
> I have a little problem... well, I don't know a lot of people and I
> don't know a good way to reach people for the club. Yeap... sounds
> stupid because I created the group, but that's my initiative I mean I
> have to motivate people to join the group.
>
> So any idea ? ... little advice ? ... anything it's really appreciated
> and well... this is the best place to ask
>
> A.



As an Amazon Associate I earn from qualifying purchases.

Terminal: RSA host key verification error

In case you get below error in your terminal, you can edit your .ssh/known_hosts file in your home directory.
Error:
RSA host key for xx.xxx.xx.xx has changed and you have requested strict checking.
Host key verification failed.
Solution:
- Find and open in your terminal .ssh/known_hosts:
pico ~/.ssh/known_hosts
- Delete all the content for this host and save file.
- When you log in to xx.xx.xx.xx server, it will prompt you to verify that this is a known host and will append permissions to .ssh/known_hosts file.


As an Amazon Associate I earn from qualifying purchases.

Entrepreneurial Thought Leaders


few valuable lessons from this one:

"Don't try to save money on the toilet paper and peanut butter and the customer care."



As an Amazon Associate I earn from qualifying purchases.

GWT 1.7 using ChangeHandler on ListBox (drop-down)

Here is a simple example of how to listen to the change event.
This functionality replaces the deprecated listBox.addChangeListener(new ChangeListener(){//implementation} );


private ListBox populateLearningLanguage()
{
final ListBox listBox = new ListBox();
addLanguages(listBox);
listBox.setSelectedIndex(2);

listBox.addChangeHandler(new ChangeHandler()
{
public void onChange(ChangeEvent event)
{
int selectedIndex = listBox.getSelectedIndex();
if (selectedIndex > 0)
Window.alert("Something got selected " + listBox.getValue(selectedIndex));
}
});
return listBox;
}


As an Amazon Associate I earn from qualifying purchases.

Flexible USB keyboard



This keyboard is incredibly flexible and the buttons have a real "press down" feeling to them, but as with any new keyboard, there is much getting used to.

The seller advertised it as indestructible, so if you work in the chemical lab, or eat a lot of pizza while typing, that may be a good choice.

I like it because it is super light, flexible, and lays down on the table which is good for my wrists. There are only blue and black versions available.

Works both with Mac and Windows.

After using it for a few days I have the following problems:

- pressing buttons is a little harder than a normal keyboard
- you have to be more precise
- space bar does not get pressed way too often and I end up with words stuck together
- arrows placement is terrible
- Windows/Apple special button is too small for as often as I use it
- backspace is too small




As an Amazon Associate I earn from qualifying purchases.

Reminds me of Rabka



As an Amazon Associate I earn from qualifying purchases.

Restaurant in Quebec City, Quebec



As an Amazon Associate I earn from qualifying purchases.

Chicago from air



As an Amazon Associate I earn from qualifying purchases.

Leaving Cleavland at sunset

I made a quick stop-over in Cleavland on the way from Montreal to
Chicago.

I am happy to go home, but not looking forward to returning to reality
-- I'd rather eat freshly baked rolls with the apricot and sweet
spread cheese and try to talk French at little cute stores in Quebec.



As an Amazon Associate I earn from qualifying purchases.

Photoshop tutorial: create aqua button






http://www.webdesign.org/cat/photoshop/tutorials/aqua-style-button-with-photoshop.35.html






As an Amazon Associate I earn from qualifying purchases.

Ant: TAR and GZIP task

You can create an ant task called, tar task, to compress a directory instead of manually creating the tar in command line.
http://ant.apache.org/manual/CoreTasks/tar.html Insert below text in your build.xml file for your project:
<tar destfile="${dist}/manual.tar" basedir="htdocs/manual"/>
<gzip destfile="${dist}/manual.tar.gz" src="${dist}/manual.tar"/>



As an Amazon Associate I earn from qualifying purchases.

McGill University, Lili's camp



As an Amazon Associate I earn from qualifying purchases.

Wonderful architecture



As an Amazon Associate I earn from qualifying purchases.

On the roof of Montreal, Quebec



As an Amazon Associate I earn from qualifying purchases.

Maven, GWT, and Eclipse round 2

So I've definitely made some progress in the Maven, GWT, and Eclipse integration. Below would be a working sample starting from a GWT project started using the google eclipse plugin.

Prerequisites:
Eclipse 3.4
Google Eclipse Plugin
m2eclipse plugin

Create your gwt project:

Create a pom for your project:


Edit the pom to look like this (profiles and resource filtering are definitely not needed and can be removed) and add any other jars you may need for your project:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.demo.application</groupId>
<artifactId>Application</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<outputDirectory>war/WEB-INF/classes</outputDirectory>
<testSourceDirectory>test</testSourceDirectory>
<testOutputDirectory>target/test-classes</testOutputDirectory>
<resources>
<resource>
<filtering>true</filtering>
<directory>src</directory>
<includes>
<!--
This will include all files in the root source like
log4j.properties or applicationContext.xml
-->
<include>*.*</include>
<!--
This will include all files in client: 1. so this project can be
inherited by another project (needs java files) 2. will include
image files for image bundles
-->
<include>**/client/**</include>
<!-- This will include any css and image files in the public folder -->
<include>**/public/**</include>
<include>**/*.gwt.xml</include>
</includes>
</resource>
</resources>
<filters>
<!--
This tells which file to use for filtering, ${target} gets replaced
by the target property specified in your profile
-->
<filter>src/${target}.properties</filter>
</filters>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<!--
This plugin will copy dependencies into the right outputDirectory
-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<configuration>
<outputDirectory>war/WEB-INF/lib</outputDirectory>
<overWriteReleases>true</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.3</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>google-maven-repository</id>
<name>Google Maven Repository</name>
<url>http://google-maven-repository.googlecode.com/svn/repository/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-api-1.0-sdk</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>com.google.appengine.orm</groupId>
<artifactId>datanucleus-appengine</artifactId>
<version>1.0.2.final</version>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-core</artifactId>
<version>1.1.0</version>
<exclusions>
<exclusion>
<groupId>javax.transaction</groupId>
<artifactId>transaction-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-jpa</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jta_1.1_spec</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jpa_3.0_spec</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-servlet</artifactId>
<version>1.7.0</version>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>
<version>1.7.0</version>
</dependency>
<dependency>
<groupId>javax.jdo</groupId>
<artifactId>jdo2-api</artifactId>
<version>2.3-ea</version>
<exclusions>
<exclusion>
<groupId>javax.transaction</groupId>
<artifactId>transaction-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.1</version>
</dependency>
</dependencies>
<profiles>
<profile>
<id>local</id>
<properties>
<target>local</target>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<target>prod</target>
</properties>
</profile>
</profiles>
</project>


You'll have to install some of the jars into maven manually, they aren't really keeping up to date with these things. For the datanucleus-appengine-1.0.2.final.jar you have to use the one that was placed in the lib folder and run this command

mvn install:install-file -DgroupId=com.google.appengine.orm -DartifactId=datanucleus-appengine -Dversion=1.0.2.final -Dpackaging=jar -Dfile=/path/to/file

At this time I would enable maven (I got some error message but just hit ok):

If you are using profiles (you probably have an error in your project at this point) tell maven which active profile to use:

You'll get a message if you want maven to update your project, hit ok.
You're done, just ignore the warning about the missing gwt-servlet.jar, it will be there, just named differently.

now we just need to make an ant build.xml to make compiling, and deploying easy.

<project name="Application" default="java_compile" basedir=".">

<property file="./src/local.properties" />

<target name="java_compile" description="Java compile, filter resources, copy jars">
<echo>Make sure you have set up Maven Executable in ./src/local.properties</echo>
<echo>Your mvn exe is set to ${MAVEN_EXEC}</echo>
<!-- process-resources filters the files in the resources directory and copies them to target/classes -->
<!-- dependency:copy-dependencies copies the dependencies to the target/dependency folder -->
<delete dir="war/WEB-INF/lib" />
<exec taskname="compile project" dir="${basedir}" executable="${MAVEN_EXEC}">
<arg line="clean process-resources compile dependency:copy-dependencies -P local" />
</exec>
</target>

<path id="project.class.path">
<pathelement location="war/WEB-INF/classes" />
<pathelement location="${gwt.sdk}/gwt-user.jar" />
<fileset dir="${gwt.sdk}" includes="gwt-dev*.jar" />
<!-- Add any additional non-server libs (such as JUnit) -->
<fileset dir="war/WEB-INF/lib" includes="**/*.jar" />
</path>

<target name="gwt_compile" description="GWT compile to JavaScript" depends="java_compile">
<java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler">
<classpath>
<pathelement location="src" />
<path refid="project.class.path" />
</classpath>
<!-- add jvmarg -Xss16M or similar if you see a StackOverflowError -->
<jvmarg line="-Xmx512M" />
<!-- Additional arguments like -style PRETTY or -logLevel DEBUG -->
<arg value="com.demo.application.Application" />
</java>
</target>

<target name="create_war" depends="gwt_compile">
<echo>Creating the war file in target/Application.war</echo>
<zip destfile="target/Application.war" basedir="war" encoding="UTF8"/>
</target>
</project>


then our local.properties file needs to look something like this

gwt.sdk=/path/to/gwt-os-1.7.0
MAVEN_EXEC=/path/to/mvn.exe


Once that is done you need to run "ant java_compile" to copy the jars into the war/WEB-INF/lib folder. And every time you change the dependencies you'd want to run "ant java_compile"

Now if you ever want to simply create a war file without using eclipse you can just run "ant create_war"


As an Amazon Associate I earn from qualifying purchases.

Eclipse not showing code errors (in red)

Occasionally Eclipse stops showing the code syntax errors that is annoying and makes it as useful to code as Text pad or BBedit.

I found that re-saving your Eclipse Perspective fixes the problem:

Now just save it with any name you like and re-start Eclipse, that does it 99% of the time.







As an Amazon Associate I earn from qualifying purchases.

Google Web Toolkit 1.7 (GWT) in Eclipse 3.4

Make sure your Eclipse knows that you are using GWT 1.7.0




As an Amazon Associate I earn from qualifying purchases.

Breakfast



As an Amazon Associate I earn from qualifying purchases.

YouTube.com warns Internet Explorer (IE6) users

YouTube.com has the "guts" to tell Internet Explorer 6 (IE6 ) browser users "We will be phasing out support for your browser soon."


The users of IE7 are OK.


This is great news for pretty much all Web developers as IE6 is a support nightmare and YouTube.com has a great market pull to make a change.

This market pull was previously demonstrated with Flash plugin -- lot people downloaded the Flash plug in just to view movies on YouTube.com

Now users are asked to download Google Chrome, IE8, or Firefox 3.5 (Opera and Safari are not listed).

Our hats off to YouTube.com!


As an Amazon Associate I earn from qualifying purchases.

Installing GWT 1.7 with Maven2



Change pom.xml:

<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-servlet</artifactId>
<version>1.7.0</version>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>
<version>1.7.0</version>
</dependency>

RUN Maven2 (via Ant) to see missing dependencies:



<property name="GOOGLE_WAR" value=".\\war" />
<property name="MAVEN_TARGET" value=".\\target" />
<property name="GOOGLE_SRC" value=".\\src" />
<property file=".\\maven\\resources\\${user.name}.properties" />


<target name="prepare">
<echo>Make sure you have set up Maven Executable in .\\maven\\resources\\${user.name}.properties</echo>
<echo>Your mvn exe is set to ${MAVEN_EXEC}</echo>
<!-- resources:resources filters the files in the resources directory and copies them to target/classes -->
<!-- dependency:copy-dependencies copies the dependencies to the target/dependency folder -->
<exec taskname="mvn war" dir="${basedir}"
executable="${MAVEN_EXEC}">
<arg line="clean resources:resources dependency:copy-dependencies -Dtarget=${TARGET}" />
</exec>
<delete dir="${GOOGLE_WAR}\\WEB-INF\\lib" />
<!-- copy the maven depenecies to the war/WEB-INF/lib folder -->
<copy todir="${GOOGLE_WAR}\\WEB-INF\\lib">
<fileset dir="${MAVEN_TARGET}\\dependency" />
</copy>
<!-- copy the filtered resources to the src folder -->
<copy todir="${GOOGLE_SRC}">
<fileset dir="${MAVEN_TARGET}\\classes" />
</copy>
</target>





Install missing dependencies to your LOCAL REPO:

uki@Uki:~ $ cd /opt/gwt/gwt-mac-1.7.0
uki@Uki:/opt/gwt/gwt-mac-1.7.0 $ mvn install:install-file -DgroupId=com.google.gwt -DartifactId=gwt-servlet -Dversion=1.7.0 -Dpackaging=jar -Dfile=gwt-servlet.jar [INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'install'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO] task-segment: [install:install-file] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] [install:install-file]
[INFO] Installing /opt/gwt/gwt-mac-1.7.0/gwt-servlet.jar to /Users/uki/.m2/repository/com/google/gwt/gwt-servlet/1.7.0/gwt-servlet-1.7.0.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
uki@Uki:/opt/gwt/gwt-mac-1.7.0 $ mvn install:install-file -DgroupId=com.google.gwt -DartifactId=gwt-user -Dversion=1.7.0 -Dpackaging=jar -Dfile=gwt-user.jar
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'install'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO] task-segment: [install:install-file] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] [install:install-file]
[INFO] Installing /opt/gwt/gwt-mac-1.7.0/gwt-user.jar to /Users/uki/.m2/repository/com/google/gwt/gwt-user/1.7.0/gwt-user-1.7.0.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL


RE-run the Ant (Maven2) until you get BUILD SUCCESSFUL


















As an Amazon Associate I earn from qualifying purchases.