Skip navigation
2012

Over the last 2+ years we have done a lot of work at helping improving Maven Integration for Eclipse (m2e) in areas of performance, features and extensions.

 

One of those extensions, if not the most important one, is maintaining and developing Maven Integration for Web Tools Platform also called m2e-wtp.

 

Today (or rather last night) our proposal for making this an Eclipse.org project got posted.

What is m2e-wtp

m2e-wtp is what helps you get seamless import of your maven projects with all the right dependencies configured, the proper assembly setup and it will even enable features in Eclipse that are relevant based on your maven pom.xml file, in context of the Web Tools Platform features : automatic configuration for Web, EJB, EAR, Connector, Web Fragment and Application Client projects.

 

m2e-wtp also brings some maven exclusive features to your favorite IDE, such as dynamic web resource filtering or war overlays.

 

You can get the current m2e-wtp from Eclipse Marketplace or by installing JBoss Tools.

Why bring m2e-wtp to Eclipse

m2e-wtp have had a “fun” life over the years. After m2e moved to Eclipse, m2e-wtp was in a weird place seeing that Sonatype hosted the issue tracker and the main source repository at github while JBoss eventually took over the development and maintenance, but the core m2e was at Eclipse.

 

This spread between multiple organizations have made it harder than necessary for potential contributors to get involved and it also made it tricky for users to know where and how to get involved and get help.

 

To remedy this, we’ve worked over the last couple of weeks/months to prepare a proposal to move m2e-wtp and this proposal is now what is available on Eclipse.org.

 

What does this mean for JBoss Tools users

It should not have any big impact to start - we plan on making the migration from the original m2e-wtp to m2e-wtp at Eclipse as smooth as possible.

 

We will continue to drive and contribute to m2e-wtp, and JBoss Tools will still provide extensions and integration on top of m2e and m2e-wtp.

 

Some of these extensions don’t make sense elsewhere than in context of JBoss Tools and others will eventually find their way into m2e and m2e-wtp.

How do I support/contribute to this proposal ?

If you are interested in this project and seeing it become a full eclipse project, please comment on it on Eclipse Proposal forum, email me directly at max.andersen@redhat.com or catch me at EclipseCon this week!

 

We would love to hear your thoughts on this, even if it is just a “that is about freaking time” comment

 

Great thanks go to all the people from Sonatype, IBM, Oracle, SAP, VMWare and others involved in making this proposal happen - to know more about them and the proposal, read more here.

 

In conclusion I would like to thank Fred Bricon for his outstanding work on m2e-wtp and I’m looking forward to see where he will take it going forward hosted at eclipse.org.

 

Thank you and have fun!

Been a busy week and weekend preparing and arriving at EclipseCon which this year decided to move from sunny(?) California to rainy(?) Reston in Virginia.

 

EclipseCon is always a busy week for me, and this year is no different - below is a list of the “official” items I’ll be doing:

 

Tycho, still good, bad or ugly ?, Tuesday - a refreshed version of my talk from EclipseCon Europe talking about how many good, bad and ugly things we ’ve see in Tycho in the process of JBoss Tools moving to it from “good old, but crappy, PDE build”

 

Eclipse Product Showcase, Wednesday - I’ve submitted a new product showcase to the reception happening at EclipseCon. We’ll see if I make it in on time

 

Ceylon the language and it’s tools, Thursday - I’ll give an introduction to the Ceylon language and the Eclipse tooling built to support it.

Booth Bunny, most days - I’ll be hanging out in Red Hat’s booth this year together with Dan Allen from JBoss and a bunch of OpenShift guys; showing of the wonders of cloud and middleware tooling.

 

…and one more thing - but that is going to be a seperate blog - watch this space

Rest of Red Hat

 

The above is not all from us, we got a few others showing up at EclipseCon too:

 

Get ready to fight your technical debt, with Tycho, Sonar and Jacoco where Mickael Istria and his co-speaker from Pod Programming, Xavier Seignard will be showing how continous improvement can be made possible with the means of technologies such as Sonar, Tycho and Jacoco.

 

Persona Non Grata - Don’t forget the users when doing your designs! is where Brian Fitzpatrick will talk about how to use user personas as guide lines for development.

 

Integration and Functional Testing from the IDE: Where does it hurt ? a BOF hosted by Dan Allen on how Arquillian can be used for integration and functional testing and what challenges still lies ahead to make that work smooth from wtihin Eclipse.

 

Hands on with C/C++ IDE which is a tutorial hosted by Andre Overholt which guides you through how to get to use Eclipse developing C/C++ applications.

 

Jumpstart Java EE6 Development in the Cloud with JBoss Tools where Mark Atwood is bound to show off JBoss Tools and how it works with the JEE tooling and OpenShift PAAS from Red Hat.

 

Developing Cloud Apps with Orion, Django and MongoDB - in 30 Minutes or Less is Mark now talking about how to use Eclipse Orion with OpenShift to do Django and MongoDB development.

 

Mobilize Your MongoDB! Developing iPhone and Android Apps for the Cloud with Eclipse shows Grant Shipley going all mobile in showing how to do mobile apps development with OpenShift and Eclipse.

 

…and then there is all the BOF’s and bar’s where all the real work is done - looking forward to meet old and new friends.

 

See you there and Have fun!

In celebration that @dhinojosa became our chiliad follower on @jbosstools we are releasing Beta1 of both JBoss Tools and JBoss Developer Studio today!

jbosstolsdevstudio.png

Beta1 (Chiliad)

Developer Studio: [Download] | Tools: [Download] [Update Site] | [What's New] [Forums] [JIRA] [Twitter]

 

JBoss Tools is a set of plugins for Eclipse that complements, enhances and goes beyond the support that exist for JBoss and related technologies in the default Eclipse distribution.

 

JBoss Developer Studio is a fully bundled Eclipse distribution which not only includes majority of JBoss Tools but also all its needed dependencies and 3rd party plugins allowing for an easy one-click installation and no-fuzz installation.

 

If you are into doing your own bleeding edge eclipse plugin assembly, JBoss tools is for you, if you are more into having something that "Just Works" then JBoss Developer Studio is the way to go.

 

Installation

 

JBoss Developer Studio comes with everything pre-bundled in its installer. Simply download it and run it like this:

 

java -jar jbdevstudio-<installername>.jar

 

Note, if you are on Mac OSX 64-bit we recommend you start it with -d32 to enable 32-bit to allow you to get the Visual Page editor and use a lot less memory.

 

java -d32 -jar jbdevstudio-<installername>.jar

 

Similar if you are on Windows 64-bit then use a 32-bit JDK to get 32-bit version running.

 

JBoss Tools requires a bit more:

 

This release requires at least Eclipse 3.7.1 but we recommend using the Eclipse 3.7.2 JEE Bundle since then you get most of the dependencies preinstalled.

 

Once you have installed Eclipse, you either find us on Eclipse Marketplace under "JBoss Tools (Indigo)" or use our update site directly.

 

The update site URL to use from Help > Install New Software... is:

 

http://download.jboss.org/jbosstools/updates/development/indigo/

 

Note: SOA tooling such as Drools, jbpm, ESB, Teeid etc. are not included in this release - they will be available separately.

 

Below is my favorite features this time around from our long list of fixes and feature improvements for this Beta.

Control JBoss Hot-redeployment

 

JBoss server adapter normally lets the JBoss Server or Eclipse JDT figure out when it is time to load newly deployed content or update class files via the debugger, but in some cases it is nice being able to say you would like a restart of your application when certain file changes.

 

We do it automatically for updates to jar files, but you might want it to be more agressive and even do it on individual class file changes or when you update .jsp's or similar files.

 

JBIDE-10464.png

If you enable the "Customize application reload behavior on changes to project resources" you now can enter a regular expression to match which resources it should trigger a reload of the module on.

 

Here are some examples:

 

ExpressionWhen it will reload
\.jar$|\.jsp$on a jar or jsp file change
.*on any resource changes (unnecessary!
\.jar$|\.class$on a jar or class file change
.jar$|.*\.model\..*.class$on a jar change or on when a .class file inside a package containing ".model." in its name (useful for only reloading on JPA annotation changes)

 

Cheatsheet for regular expression syntax used above: \. matches a . (dot), $ means end of line, | means 'or' allowing to group content.

 

This of course means more often redeploys but that can very often be just the thing you need for your specific workflow.

 

Skinned and Intelligent BrowserSim

The mobile browser simulator now looks like a mobile browser and will now try intelligently to detect which URL to open with based on what is the current selection/editor in Eclipse.

 

http://docs.jboss.org/tools/whatsnew/vpe/images/3.3.0.Beta1/10553-browsersim-default-page.png

Redesigned OpenShift UI

To handle more complex scenarios such as supporting deploying openshift applications already associated with another git repo and to make OpenShift easier to get started with we have redesigned the OpenShift wizards and views.

 

http://docs.jboss.org/tools/whatsnew/openshift/images/wizard-new-application.png

OpenShift Express Console

 

We've added view called OpenShift Express Console which gives you a nice overview of your OpenShift account(s), your applications/cartridges and provides easy access to common operations.

 

http://docs.jboss.org/tools/whatsnew/images/importapp_via_console.png

OpenShift Source and binary deployment

It is now possible to drag existing deployable resources such as WTP projects and resources marked as deployable to the OpenShift server and if the resource is part of the related github project it will just be associated with the server, but if the resource is not part of the OpenShift project then it will be placed inside the /deployments folder of the project as a binary.

 

Once you publish to OpenShift the binary deployments will be deployed together with your source project which will be built by OpenShift.

 

Updated JBoss Central content

JBoss Central now refreshed all the main wizards for JavaEE, Richfaces, html5.

 

Richfaces shows up recent Richfaces 4 release and HTML 5 is showing of the work done in the Aerogear project regarding mobile application development.

 

We are also now featuring GWT Web project which has Errai in it showing of their event bus to communicate between multiple browsers.

http://docs.jboss.org/tools/whatsnew/images/jboss-central-create-projects2.png

Note, that Google Eclipse plugins are not installed by default - it will be offered when you click the GWT web project.

 

EAP 6 Enterprise Maven Repository

All of the examples above works with the upcoming EAP 6 release which includes a Enterprise Maven repository.

To enable this target an EAP 6 server adapter or set the "enterprise" flag in the wizard to true.

 

From this the project will generate projects that uses the proper enterprise supported binaries over the community binaries.

Faster Import

We found and fixed a memory and CPU issue that caused import of bigger projects to be slow and in some cases even stall.

 

With this issue fixed projects import much faster even for our small test projects it wins 4 seconds and for larger projects it should be even bigger gains.

 

As always let us know if you see slowness that seems unwarranted and we will love to help trace it down and fix the problems.

 

Seam 2.3

 

Seam tooling now accepts and work with Seam 2.3. Seam 2.3 is still in development but it will eventually allow deploying Seam 2 applications on JBoss 7 and Enterprise Application Platform 6.

 

Forge

The Forge tooling now bundles Forge 1.0.0.Final and adds a good set of usability features.

 

Link with editor makes any file opened in the current editor be picked up by Forge - meaning you don't have to manually type the resource location into Forge. Forge will already be there.

http://docs.jboss.org/tools/whatsnew/forge/images/3.3.0.Beta1/link_with_editor.png

"cd" and "pick-up" support, is kind of the opposite, here things you do in Forge gets Eclipse to open/select the used resources.

 

http://docs.jboss.org/tools/whatsnew/forge/images/3.3.0.Beta1/cd.png

Maven + JPA

 

Maven now detects if your project is using JPA and enables JPA/Dali/Hibernate tooling support on your project.

 

JAX-RS + Webservice Tester

The JAX-RS REST Web Services node in Project Explorer now supports "Run As..."-style launching of the Webservice tester.

 

Meaning you can right click on a URL path under JAX-RS and run as on your server and it will if, necessary deploy the application, start the server and then open the web services tester

with the selected URL and give you easy acces to test and explore the returned output.

 

JAX-RS-WS-Tester_Run_As.jpg

 

..and more

The above are just a fraction of the 750+ issues we have fixed this time around - you can see more highlights and screenshots here, but I encourage you to try out this Beta of JBoss Tools or Developer Studio instead of just taking my word for it  - and let us know in the comments or forum what you think about it!

 

Have fun,

Max

This is the last of a series of blog posts covering three features I have had a personal interest in making it into AS 7.1 and the upcoming JBoss Enterprise Application Platform (EAP) 6.

 

Todays topic is about Quickstarts.

Quickstart Frenzy

 

The team doing AS Quickstarts have worked with the tools team on making sure all of the quickstarts have been developed, tested and verified to work nice and clean out of the box for developers - including making them equally Just Work no matter if you are using command line or when using them with an IDE such as JBoss Tools and Developer Studio.

 

This was even true with AS 7.0 and if you missed our recent AeroGear launch you should go look since this Mobile/HTML5 driven project used the tools to show of AeroGear’s magic and one of the key drivers on making this so nice and clean was with the help of the Maven based quickstarts and the power of AS 7, OpenShift and well - kick ass tools if you ask me

 

You will be seeing more of these things happening going forward when other projects gets upto speed with AS 7 and start to have a full experience on AS 7 together with Quickstarts that works well with tools.

 

Now back to the AS 7.1 quickstarts. The following is a listing of the curent quickstarts available for download at jboss.org

 

  • bean-validation - Bean Validation, JPA
  • bmt - EJB, Programmatically control transactions
  • cdi-injection - CDI injections & qualifiers + Servlet
  • cmt - EJB, how to use container managed transactions
  • ejb-in-ear - EJB + JSF, JAR and WAR deployed as EAR
  • ejb-in-war - EJB + JSF deployed as a war
  • ejb-remote - shows how to access EJBs remotely (EJB + JNDI)
  • forge-from-scratch - Forge
  • greeter - CDI + JSF + JPA + EJB + JTA
  • h2-console - H2 Database console
  • helloworld -Very basic CDI + Servlet
  • helloworld-gwt - GWT
  • helloworld-html5 - Very basic HTML5
  • helloworld-jms - JMS
  • helloworld-jsf - Very basic CDI + JSF
  • helloworld-mdb - Very basic JMS and MDBs
  • helloworld-osgi - OSGi
  • helloworld-rs - CDI + JAX-RS
  • helloworld-singleton - Singleton Session Bean
  • hibernate3 - Hibernate 3
  • hibernate4 - Hibernate 4
  • jts - Using JTS to coordinate distributed transactions
  • kitchensink - CDI + JSF + JPA + EJB + JPA + JAX-RS + BV
  • kitchensink-ear - kitchensink as an EAR archive
  • kitchensink-html5-mobile - kitchensink using HTML5, suitable for mobile and tablet computers
  • kitchensink-jsp - kitchensink converted to use JSP
  • log4j - JBoss Modules, Class loading, logging
  • numberguess - CDI + JSF
  • payment-cdi-event - CDI
  • servlet-async - CDI + Asynchronous Servlet + Asynchronous EJB
  • servlet-filterlistener - Servlet Filter and Listener
  • wsat-simple - Simple WS-AT JAX-WS Web service
  • wsba-coordinator-completion-simple - Simple WS-BA JAX-WS Web service with coordinator driven completion
  • wsba-participant-completion-simple - Simple WS-BA JAX-WS Web service with participant driven completion

 

As you might notice the number of quickstarts have grown from 5 in AS 7.0 to 33 in AS 7.1.

 

These quickstarts cover a broad range of technologies all setup to run on AS 7.1 and all follows more or less the same structure:

 

  • contains a README.html/.md with explanation of what the example does
  • a pom.xml following good best practices when building projects that uses JEE & JBoss API
  • is importable into JBoss Tools and Developer Studio

 

Mind you that because of the last two points (pom.xml + importable into tools) you should see that it is just as usable in other IDE’s that support import of Maven projects such as Netbeans, Intellij and others.

 

That is the power of Maven - no matter how much we all love to complain about Maven’s shortcomings as a build tool, the fact it is prevalant, has all major dependencies available and works from both command line and IDE’s is a huge win.

 

Migrating from Community and Product

JBoss AS 7 and EAP 6 is the first release of JBoss which are built primarily with Maven. This change also makes it possible to finally easily use proper dependency managemment when building applications using JBoss AS 7 and EAP.

 

We’ve even gone so far to make sure that it is easier to move from AS 7 to EAP 6 - for plain applications it should just be a matter to adjust the Bill-Of-Materials (BOM) POM used in your <dependencyManagement> section in your pom.xml.

 

To do this presented a challenge since EAP 6 as the productized rebuilt version of AS 7 would get an overlap of Maven Group/Artifact/Version-identifiers (GAV) if not done properly. If you’ve used build systems with dependency management you know overlapping Maven GAV's presents a problem of possibly ambigious dependencies when doing builds. Especially with Maven which caches and stores all its artifacts in one location, namely ~/.m2/repository. Imagine what happens if you first built against Maven central/JBoss.org repositories and then later used an EAP Maven repository where GAV were the same but the actual artifacts behind them were not. Such setup will be catastrophic for any software release, no matter if mission critical or just for fun.

 

Therefore we have taken this into account and JBoss EAP build team ensures that no GAV “overlapping” occurs by adding the -redhat-<number> qualifier to anything that is part of an EAP based product such as JBoss EAP 6.

 

This ensures continuity for developers using AS 7 and wanting to test and go to production against EAP 6 and doing this change is illustrated well when looking at the difference between quickstarts in JBoss AS 7 and those bundled with EAP 6.

 

Here is a snippet from the dependency management part of AS 7.1 quickstart:

<dependency>
    <groupId>org.jboss.spec</groupId>
    <artifactId>jboss-javaee-6.0</artifactId>
    <version>3.0.0.Beta1</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

And here is the same from an EAP 6 quickstart:

<dependency>
    <groupId>org.jboss.spec</groupId>
    <artifactId>jboss-javaee-6.0</artifactId>
    <version>3.0.0.Beta1-redhat-1</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

Notice, the difference ? The only difference is ‘-redhat–1’ in the version tag.

 

This small change ensures that your build now will use EAP 6 supported productized binaries instead of the community bits as long as you do not list the explicit version of your specific dependencies and let the BOM POM be the "manager" of the versions.

 

It is a subtle difference with great potential.

 

This means that users applications can be built targeting community releases early on and when relevant start targeting productized versions with an easy change of the BOM.

 

And as a sideeffect it also becomes easy for you to try out experimental new features in future community releases of JBoss AS 7, 8, etc. by just picking the right version in the dependency management section.

 

Note: as productized versions stabilizes, gets security and bug fixes some differences will occur which might require some other changes but with the conventions of the -redhat qualifier and usage of so called Maven Bill-Of-Material(BOM)-pom’s it becomes easy migrate and there is a central place and format to outline the build differences that applies to you as a user of JBoss AS and EAP.

JBoss Tools and Quickstarts

There are two easy ways to get started with quickstarts from within JBoss Tools.

 

The first one is simply to open JBoss Central and pick one of the Quickstarts listed in the project example section:

jbosscentralquickstarts.png

 

When starting such example you get a short description plus option to download any missing plugins or server runtimes (such as AS 7.1).

Note: at time of writing the current M5 release of JBoss Tools targets AS 7.0, AS 7.1 will be targeted in upcoming JBoss Tools release.

 

projectexamplefirstpage.png

 

This makes it easy to get started - the only thing you need is to download JBoss Tools or Developer Studio and it will help you get the remaining dependencies.

 

Alternatively if you prefer to download everything manually and have access to all quickstarts in on go then simply Download the quickstarts and use the ‘Existing Maven Projects’ Import wizard.

 

mavenimport.png

 

In this wizard you can import a subset or all quickstarts as you see fit. After that JBoss Tools will with help of m2eclipse and m2e-wtp import the projects and you can start trying out JBoss AS 7 or EAP 6.

 

And as a final touch if you target AS 7 the examples will be setup to use community binaries but if you target EAP 6 we will enable the enterprise flag for the archetypes which will make the created project target EAP productized binaries instead via the usage of the -redhat qualifiers instead.

What if I don’t want to use Maven ?

 

For easy distribution of quickstarts and making sure it works in the many different environments users work in it is the best option available today.

 

We do though understand and realize not everyone likes to use Maven for their projects and for this we’ve added a feature in JBoss Tools which allows you to convert a Maven Eclipse project to a “plain” Eclipse project.

 

The feature is available via right click on any classpath library such as “Maven Dependencies” and is called “Materialize Library”

materializelibrarymenu.png

 

This feature materializes (i.e. copy) the Maven classpath libraries from being located in ~/.m2/repository to a directory into your project + disabling the Maven Nature and thus you end up with a “Maven free” project.

 

materializelibrarydialog.png

 

This means you can use the Maven based quickstarts, import it, apply “Materialize Library” and end up with a project that has no dependency to Maven builds and you can create a build in your favorite alternative build tool.

 

Everybody wins.

 

The End

This brings to the end of my blog series concerning the main three features in AS 7 I get excited about: Deployable datasources, Developer Friendly Security and finally the Quickstart Frenzy.

 

Of course there are plenty of other features in AS 7.0 and 7.1 to get excited about, things like the ~1–4 second startup time, the scritable management API, domain multi node setup, unfied configuration files and more.

 

But the ones that excites me this time around are the ones that I found to be most helpful for developers and makes tooling integration easier/better.

 

I’ve told you what excites me in AS 7.1, now I would love to hear what feature of AS 7.1 excites you ?

Filter Blog

By date:
By tag: