Scripting the setup of Eclipse - eclipse

I'm currently messing around with scripting the setup of Eclipse using ant. The idea is to create a one-button setup of our development environment, replacing an existing Word document which describes how to do so manually.
The setup involves things like unzipping Tomcat servers, unzipping a virgin Eclipse instance, installing plugins on top of Eclipse, etc. All of this is working smoothly now.
Another part of the setup involves configuring things in Eclipse -- the things that you would normally do using the Eclipse UI. This involves things like picking a specific JRE, creating a server in Eclipse, creating a workspace, importing some projects into the workspace.
I've had some modest successes in initializing the Eclipse preferences by simply writing files into the preference folders of Eclipse. But this is based upon reverse engineering and feels like a fragile approach. Furthermore, I have not yet worked out how to import the existing projects.
Am I overlooking the easy and robust way to achieve this?

I have done similar thing previously and I have found the reverse engineering approach to work well for preferences.
The only way I have found to import existing projects is to write a headless Eclipse plugin that uses IWorkspace, IProjectDescription and IProject. Check this thread on Eclipse Community Forums for some pointers. You can also find more information about it in the Eclipse help.
Then it's just a matter of executing Eclipse from your script with some parameters like
-nosplash -application [your plugin] -data [workspace folder]

Related

Netbeans 7.3 annoyances

I recently switched from Eclipse to Netbeans 7.3 and experiencing a lot of quirks and i'm wondering if anyone else experienced them and/or got a solution. Because of these 'problems' i'm considering switching back to Eclipse again but i'm in doubt because NB has a lot of good things too !
These are the quirks:
when creating a new Java class, and make some typo's e.g. somewhere in a method, NB does not recognize / display the errors directly, but after a very long wait or a restart of NB.
This also happens to existing classes.
background scanning tasks is sometimes stuck at 100%
code completion does take forever. Don't even think about refactoring or renaming a class because it takes >3 minutes to scan the classpath (why, it's a new class for crying out load)
hot-deployment: changes are not always synchronized correctly with the (Glassfish) server.
Sometimes a complete undeploy and deploy is needed to reflect the changes made in the source.
NB manipules my pom.xml and glassfish-web.xml: it adds a deploy hint to the pom.xml and also changes or removes the context-root in the glassfish-web.xml. Please stop doing this!
Why o why can't i do a 'Fix imports' on my entire project. You can do a 'organize import' on the entire project, but this won't add the missing imports. See http://netbeans.org/bugzilla/show_bug.cgi?id=167031#c2
Running NB 7.3 on Windows XP, 3GB RAM, 2+GHz cpu
The project is a Java 7 maven project containing 12 modules / sub projects
I strongly recommend that you DO NOT attempt to install the ScanOnDemand plugin. It completely trashed my Netbeans, forcing me to use the Task Manager to kill the process. No existing projects were found; they were all listed as "unrecognized project; missing plug-in?". I had to re-install Netbeans.
One thing to look for is max heap allowed. Try adding "-J-Xmx2000M" to the Netbeans startup.
ref: Setting Heap Size
I suggest stick to your favourite IDE. Eclipse is still popular and Juno packages are doing good and Kepler is already available. You can try around latest packages.
IntelliJ IDEA looks better than other Java IDEs (light weight, faster, nice integration with SCM(source configuration) tools, possibility of easy cloud deployment, except that if you have freedom to choose your IDE whether you are part of a big/small teams, Otherwise there is no need to shift from one to other.
IntelliJ is the first IDE to give nice in-built support to Play framework
Google Android ADT is completely moving towards AndroidStudio based on community version of IntelliJ IDEA for faster and better GUI and app development.
As a Java developer it is not bad to try the other IDE to do some experiments or for any reason it strikes your mind.
Eg: Netbeans comes with sample apps in Java EE,Java7/Java2EE which looks better, nice examples for websockets, Servlet3.0, NIO examples etc,...but just try it or just ignore if it does not work. It is very easy to generate Entities from Database Tables, creating REST Endpoints in NetBeansIt may come with lot of in-built plugin-support for various java frameworks like RESTful webservice frameworks, JSF2.x, Primefaces3.x, SpringMVC, Struts but you may not sure to use the same version of framework. Some plugins may not work sufficient according to your business needs. Even if you okay with existing version it is not very friendly to develop Rich real-time UI development because Netbeans with Primefaces, instead you need to manually create XHTML templates.
Netbeans comes with nice support for Glassfish and tomcat, (other servers I am not sure but support is in-built). You can remote deployment with ease. Netbeans learning tutorials on JavaEE nice for beginners in the subject.
Netbeans also available as zipped bundle, hence no need to install even on Windows machines.
Eclipse has got better support with Java RoboCode learning tool (initiated by developed by IBM long ago.).
Also Netbeans comes with nice support for HTML5, Groovy, PHP, C++ as well (according to posts by users community, because I did not use them).

Migrate Java web project from netbeans to eclipse

I have looked at some forums on how to migrate Netbean’s java project to eclipse. But I was looking for a way how to migrate Netbean’s java web project (I used JSF and Primefaces) to eclipse. Since the project is not that much big, I will also dedicate my time to do it manually. But, I have not sure on how to do that. Should I have to move just packages, classes, jar files and xml files manually? I don't have a knowledge in maven or scripting as well.
Thank you for your help guys.
Convert your application to a Maven application, that way you can have portability between any of the major IDEs.
If you haven't done anything odd with your build scripts then its as easy as copying and pasting into your new project.

Boostrapping new Eclipse machines with all the Plugins

Bootstrapping Eclipse on new machines is such a time consuming process, you wind up asking yourself whether you really need each plugin. But there all handy, and help develop consistent habits.
Eclipse bootstrapping problems include:
Explaining / documenting what needs to happen
The actual time pasting in the right URLs and downloading
Version compatibility and dependencies
Eclipse likes to restart after each one
The changeover to the Eclipse Marketplace means that some plugins and instructions you find on the web tend to be inconsistent, depending on when they were written.
The Licenses... over and over and over... yes, yes, yes... I understand that the person installing needs to be aware of it, and have a chance to review them, but there's got to be a better way.
It'd be nice to have "patch file" (either binary or meta) that spells out what I want to add on top of stock Eclipse installation. I'd really like to find (or create) a 1 or 2 step process that sets up Eclipse, plus a favorite batch of plugins:
subclipse
m2eclipse
jetty support like runjettyrun
android sdk and plugin (or at least just the plugin)
aspectj
Web Objects / WOLiops
python, other langs
JVM Monitor, maybe EclEmma
probably a git plugin pretty soon.
Does command line maven help with any of this? It seems like its repository management would fit at least part of the functionality.
On a machine with an Eclipse installation matching your needs use File -> Export -> Install -> Installed software items to file. Import the generated file using the same menu on all other machines.
As Scott says, a good approach is to simply package a fully prepared Eclipse installation once all the plugins you need are installed. The downside is that you have to update most plugins afterwards.
Another option is to use Yoxos. With it, you can create a profile and configure it with all the plugins you need (and apparently Yoxos can do more than that).
Finally, this page might interest you concerning the configuration side of things.
Solution 1 is too search for more advanced Eclipse distributions.
For example, STS (Spring Tool Suite) comes with
AspectJ
EGit
m2e
(and of course) Spring IDE
One small trick can be done with m2e-android - Android Configurator for M2E Maven Integration. If installing it on clean Eclipse, it will also automatically resolve to install :
m2e
Android Developer Tools (ADT)

Cross-Platform Single-Instance IDE Setup

I like to carry software around with me on a USB flash drive. I also like to work in both Windows and Linux. Finally, I like to develop software using powerful tools.
Bringing these three things together, I want to be able to carry an IDE around with me. My favorite choice is Eclipse.
So, I tried to get an Eclipse install working on a thumb drive. Not surprisingly, it's just fine if I pack in a JDK. But Eclipse without plugins just doesn't do it for me. After installing my plugins of choice, I had a hefty 300ish MBs of data.
Then I realized that I'd only installed for Linux. And that I was going to have to duplicate everything to get a Windows install. That's not good.
I've searched the web. I found a guide on creating .link files which looks like a hack from the early 80s. I found documentation on the new Eclipse p2 provisioning which I couldn't even understand. I checked Pulse, and they don't support Helios yet.
I remember in old Eclipse days you could just install a plugin to an alternate directory, and share that dir across different Eclipse installs. Today, I couldn't manage to find anything of the sort.
I did manage to get Netbeans up and working properly in a cross-platform manner in around 30 minutes. But I prefer Eclipse.
Could anyone give me a hand? What I'm looking for is:
One install of the platform-independent portions of the Eclipse internals
One install of each plugin I desire
The ability to run this unified Eclipse from both Linux and Windows
I know I'll need a JVM for each platform. I know I'll also need an SWT lib and launcher for each OS. That's fine.
You need to have separate Eclipse installations for each platform and a shared plugins directory for both installations. There are many questions on the subject on StackOverflow. For example, see this comprehensive answer.
Start with the standard Eclipse packages. Complete your shared dropins setup. Once you are up and running, you get probably move plugins from each standard installation to the shared dropins directory to save space (for example, JDT).

JavaRebel with a Multi-module Enterprise Project in Maven

Does anybody have experience working with JavaRebel, specifically for a large web application built using Maven? There is a JavaRebel plugin for Maven that seems under-documented, does anybody have comments on how it works, can you really update one class in a Multi-module Enterprise Project and have it "automagically" change on your Server?
Are there any issues with different IDEs and this setup? For example NetBeans will not let you compile one class at a time in a Maven project (from what I can tell).
Disclaimer: I work for ZeroTurnaround.
JRebel (formerly JavaRebel) installation involves the application configuration file "rebel.xml" and modifying the container startup command line.
The Maven plugin is used to generate the "rebel.xml" file, that is used by the JRebel agent running in the container to find the files in the workspace. This allows to use IDE building to compile .java files and skip the Maven build process, as the changes to files will be picked up from the workspace. However as it relies on the IDE to compile the classes, it does depend on the IDE ability to compile efficiently. I know for sure that Eclipse will compile classes one at a time and am fairly sure you can configure NetBeans and IntelliJ IDEA to do the same.
In addition to the Maven/rebel.xml configuration you also need to configure the container startup command line. You may also need to install and IDE plugin or do some additional configuration to have the best expirience with JRebel. Following through the steps of Installation manual ensures that.
Hope this helps.
Disclaimer: I've not actually used this plugin myself.
This tutorial implies that JavaRebel works well with Eclipse 3.4. If you are also using m2eclipse it should work ok with Maven projects as well (as long as you ensure that Maven and Eclipse are compiling to the same target folder so the Eclipse incremental compiler can be used to modify the class file).
According to this post, you should configure the javarebel-maven-plugin to generate the rebel.xml (used to mount external folders to the application classpath). There's also a general installation guide you may find useful.