Make one version of the app, and use properties that you read from some bundled resource file to determine whether it's the free version or the paid version. For instance, when building the paid version, you just set something like:
com.myapp.version=paid
...and for the free app maybe something like:
com.myapp.version=free
And then as part of your initialization code you could fetch this property from the file/resource, and set it as a system property. And then the rest of you code can just do:
if ("paid".equals(System.getProperty("com.myapp.version"))) {
//allow access to paid functionality
}
else {
//nag the user to get the paid version
}
So instead of two separate projects, you have a single project and a single codebase that you use to build two different artifacts.