<?xml version="1.0" encoding="iso-8859-1"?>



<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:cc="http://web.resource.org/cc/"
  xmlns="http://purl.org/rss/1.0/">

<channel rdf:about="http://blogs.codehaus.org/people/mkleint/">
<title>mkleint</title>
<link>http://blogs.codehaus.org/people/mkleint/</link>
<description><![CDATA[mkleint - mostly about maven and netbeans
<script type="text/javascript" 
src="http://technorati.com/embed/gwqgxhtnr.js"></script>
<script type="text/javascript" src="http://www.ohloh.net/accounts/1531/widgets/account_detailed"></script>
<a href="http://www.linkedin.com/in/mkleint" ><img src="http://www.linkedin.com/img/webpromo/btn_viewmy_160x33.gif" width="160" height="33" border="0" alt="View Milos Kleint's profile on LinkedIn"></a>]]></description>
<dc:language>en-us</dc:language>
<dc:creator></dc:creator>
<dc:date>2009-07-01T13:59:07+00:00</dc:date>
<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=2.661" />


<items>
<rdf:Seq><rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001805_maven_netbeans_platform_javarebel.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001804_nb_67_binaries_in_maven_repository.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001795_appframework_maven_javarebel_and_netbeans.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001789_fixing_maven_pom_inheritance_chain.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001775_add_maven_dependency_the_easy_way.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001766_nbm_maven_plugin_30_released.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001735_nb_65_artifacts_in_a_maven_repository.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001732_mavenhudson_automation.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001704_maven_pom_inheritance_view.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001679_writing_groovy_maven_plugins_in_netbeans.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001675_netbeans_included_in_new_mandriva_20081_.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001673_remote_maven_repositories_at_your_fingertips.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001672_i18n_hyperlinking_for_netbeans_modules.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001639_maven_11_support_now_also_for_upcoming_netbeans_60.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001614_does_this_make_a_useful_feature.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001611_comparing_projects_the_ohloh_way.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001603_spice_up_netbeans_ant_projects_with_maven.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001452_qqq_questionable_quiz_question.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001436_mevenide_testimonials_anyone.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001426_mevenide2_hotfix_release_for_nb_55.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001423_one_year_birthday_of_mevenide2.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001368_hyperlinks_in_maven_poms.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001367_yet_another_way_of_working_with_gwt_in_netbeans.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001352_whats_new_netbeans_maven2_integration.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001341_dont_create_just_open.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001330_diagrams_for_everyone_ii.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001323_diagrams_for_everyone.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001322_maven2_repository_containing_netbeans_apis_up_and_running.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001262_mevenide_at_javapolis_2005.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001139_preview_of_updates_in_netbeans_maven_support.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001050_popupfactory_gotchas.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001048_daily_routine_at_netbeans_prague_office.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001027_mavens_hidden_dragon.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001024_maven_unused_features.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/001019_tutorial_on_creating_netbeans_modules_with_mevenide.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/mkleint/archives/000862_those_ui_design_dilemmas.html" />
</rdf:Seq>
</items>

</channel>

<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001805_maven_netbeans_platform_javarebel.html">
<title>Maven, NetBeans platform, JavaRebel</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001805_maven_netbeans_platform_javarebel.html</link>
<description><![CDATA[<p>When I was <a href="http://blogs.codehaus.org/people/mkleint/archives/001795_appframework_maven_javarebel_and_netbeans.html">playing with JavaRebel</a> in April, it was not possible to use JavaRebel with the NetBeans platform. Basically because the module system is just another container and for each container you need a JavaRebel plugin. The guys at Zeroturnaround wrote the plugin a few weeks back (thanks!) so I've downloaded the nightly build and tried to experiment a bit. I've also worked some more on <a href="">Compile on Save</a> support for 6.8, so I wanted to test how far we've got with <a href="http://www.netbeans.org/issues/show_bug.cgi?id=161337">#161337</a>. Here's the result.<br />
</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2009-07-01T13:59:07+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001804_nb_67_binaries_in_maven_repository.html">
<title>NB 6.7 binaries in Maven repository</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001804_nb_67_binaries_in_maven_repository.html</link>
<description><![CDATA[<p>I've uploaded the Netbeans 6.7 final artifacts to the Maven repository at <a href="http://bits.netbeans.org/maven2/">http://bits.netbeans.org/maven2/</a>. It contains the module jars, NBM files, javadoc and source jars and other artifacts relevant to 6.7 release.</p>

<p>Please note that when upgrading your NetBeans platform application from 6.5 to 6.7, you need to increase the version of all artifacts from <b>RELEASE65</b> to <b>RELEASE67</b> and also in your <b>nbm-application</b> project, change the dependency from <b>org.netbeans.cluster:platform9</b> to <b>org.netbeans.cluster:platform10</b>. The artifactId of the platform cluster has changed as the cluster version was increased. (Not sure what meaningful purpose the cluster numbering serves, but that's a different story)</p>

<pre>
        &lt;dependency&gt;
            &lt;groupId&gt;org.netbeans.cluster&lt;/groupId&gt;
            &lt;artifactId&gt;platform10&lt;/artifactId&gt;
            &lt;version&gt;${netbeans.version}&lt;/version&gt;
            &lt;type&gt;pom&lt;/type&gt;
        &lt;/dependency&gt;
</pre>

<p>Please note that the current 3.0 version of the nbm-maven-plugin might <a href="http://jira.codehaus.org/browse/MNBMODULE-55">have problems</a> with NetBeans 6.7 . A new version of the plugin will appear shortly.<br />
</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2009-07-01T09:08:43+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001795_appframework_maven_javarebel_and_netbeans.html">
<title>Appframework, Maven, JavaRebel and NetBeans</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001795_appframework_maven_javarebel_and_netbeans.html</link>
<description><![CDATA[<p>I've tried to play around with various setups of Maven projects in NetBeans, testing "Compile On Save" primarily. The traditional CoS in NetBeans will redeploy your webapp or quickly rerun the application (without recompiling the sources). I've tested a bit more IDE independent setup here, described in few simple steps, hopefully useful to someone.</p>

<p>0. Install the latest <a href="http://bits.netbeans.org/download/trunk/nightly/latest/">dev binaries</a> of upcoming NetBeans 6.7 (future beta or existing M3 shall also do, no guarantees for 6.5). Also download the Javarebel application from <a href="http://www.zeroturnaround.com/javarebel/download/">zeroturnaround.com</a></p>

<p>1. First take the <a href="http://repo2.maven.org/maven2/org/codehaus/mojo/archetypes/appframework/1.0/"> appframework archetype</a> and create a sample project we will be playing around. In Netbeans 6.7 builds, the archetype shall be available in the New Maven project creation wizard in a privileged location.</p>

<p>2. Open the pom.xml file for the project and add a profile for JavaRebel there.<br />
<pre><br />
   &lt;profile&gt;<br />
    &lt;id&gt;rebel&lt;/id&gt;<br />
    &lt;pluginRepositories&gt;<br />
        &lt;pluginRepository&gt;<br />
            &lt;id&gt;zt-repo&lt;/id&gt;<br />
            &lt;name&gt;Zero turnaround repo&lt;/name&gt;<br />
            &lt;url&gt;http://repos.zeroturnaround.com/maven2&lt;/url&gt;<br />
        &lt;/pluginRepository&gt;<br />
    &lt;/pluginRepositories&gt;<br />
    &lt;build&gt;<br />
        &lt;plugins&gt;<br />
            &lt;plugin&gt;<br />
                &lt;groupId&gt;org.zeroturnaround&lt;/groupId&gt;<br />
                &lt;artifactId&gt;javarebel-maven-plugin&lt;/artifactId&gt;<br />
                &lt;version&gt;1.0.2&lt;/version&gt;<br />
                &lt;executions&gt;<br />
                    &lt;execution&gt;<br />
                        &lt;id&gt;generate-rebel-xml&lt;/id&gt;<br />
                        &lt;phase&gt;process-resources&lt;/phase&gt;<br />
                        &lt;goals&gt;<br />
                            &lt;goal&gt;generate&lt;/goal&gt;<br />
                        &lt;/goals&gt;<br />
                    &lt;/execution&gt;<br />
                &lt;/executions&gt;<br />
                &lt;configuration&gt;<br />
                &lt;/configuration&gt;<br />
            &lt;/plugin&gt;<br />
            &lt;plugin&gt;<br />
                &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;<br />
                &lt;artifactId&gt;maven-antrun-plugin&lt;/artifactId&gt;<br />
                &lt;version&gt;1.3&lt;/version&gt;<br />
                &lt;executions&gt;<br />
                    &lt;execution&gt;<br />
                        &lt;id&gt;run&lt;/id&gt;<br />
                        &lt;phase&gt;process-resources&lt;/phase&gt;<br />
                        &lt;goals&gt;<br />
                            &lt;goal&gt;run&lt;/goal&gt;<br />
                        &lt;/goals&gt;<br />
                    &lt;/execution&gt;<br />
                &lt;/executions&gt;<br />
                &lt;configuration&gt;<br />
                    &lt;tasks&gt;<br />
                        &lt;echo file="${project.build.outputDirectory}/.netbeans_automatic_build"&gt;Generated by maven build for javarebel in netbeans.&lt;/echo&gt;<br />
                    &lt;/tasks&gt;<br />
                &lt;/configuration&gt;<br />
            &lt;/plugin&gt;<br />
        &lt;/plugins&gt;<br />
    &lt;/build&gt;<br />
&lt;/profile&gt;<br />
</pre></p>

<p>The configuration performs 2 tasks. It generates the rebel.xml file required by the Javarebel agent to find the output folders of the project in the resulting running application. Second, it generates a file in the output area of the project that tells NetBeans java support to copy the class files on saving.</p>

<p>3. Now you can Enable Configurations in the Project properties, activate the <b>rebel</b> profile there and for that profile/configuration, add additional VM options for running the application (the Run panel in project properties dialog)<br />
For me it was:<br />
<pre><br />
-noverify -javaagent:/home/mkleint/javatools/javarebel/javarebel.jar<br />
</pre></p>

<p>4. Build & Run the Application. If you've done things right, you should see in the output that the JavaRebel agent is running.If you open the application's AboutBox form and move stuff around, you should be able to see the changed propagated on Save in the IDE. Oups, You actually won't :) The <b>showAboutBox()</b> method the View class is caching the created about box, therefore the old layout persists. Once you remove the caching (even already in running application), you will see any changes in the AboutBox in the running application immediately.</p>

<p>5. Enjoy.</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2009-04-27T15:08:40+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001789_fixing_maven_pom_inheritance_chain.html">
<title>Fixing Maven POM inheritance chain</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001789_fixing_maven_pom_inheritance_chain.html</link>
<description><![CDATA[<p>Whenever you have a Maven project inheriting from a parent POM, you should make sure the parent is  accessible from the sources via the project/parent/relativePath element. The default value is "../pom.xml", the direct parent folder. The sources version will only be used if the coordinates match, of course. Eg. your project/parent /version element value needs to match the parent's version element.</p>

<p>If one of the conditions is not met, you end up resolving the parent POM from repositories defined in the current project.  That might be the right thing in some cases, but sometimes it will prevent you from building the project separately (without having built all the parent beforehand) and also loading of the project in the IDE. In NetBeans, this is one of the reasons for the famed "Badly formed Maven project" error message. Even if it resolves properly from repositories, you might end up in with inconsistent data if some of your projects use the parent from local repository and some from sources.</p>

<p>A way to double check in NetBeans how your projects resolve is to show the "POM Inheritance" navigator view while having the pom.xml file focused in editor.<br />
<img src="http://www.codehaus.org/~mkleint/inheritance.png" alt="Sreenshot"/><br />
In this screenshot, I have opened the v3/common/glassfish-api/pom.xml file from the latest <a href="https://glassfish.dev.java.net/">GlassFish</a> svn checkout. The navigator view is in the left bottom area. It displays the project's POM inheritance, the current pom at the top, the direct parent below it and so on. Any parent marked with "(read only") is only resolvable from local and remote repositories. In this example, that might be fine for the ultimate root (pom - 3), but it's most likely wrong for any SNAPSHOT parents, like glassfish-parent.</p>

<p>PS: The NetBeans 6.7 <a href="http://wiki.netbeans.org/NewAndNoteworthyMilestone3NB67">Milestone 3</a> is out. <a href="http://bits.netbeans.org/download/6.7/m3/">Check it out</a>.</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2009-04-03T11:31:50+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001775_add_maven_dependency_the_easy_way.html">
<title>Add Maven dependency the easy way</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001775_add_maven_dependency_the_easy_way.html</link>
<description><![CDATA[<p>I've added a few additions to the "Add Dependency" dialog  in NetBeans 6.7 daily builds (and the upcoming Milestone 3 of 6.7)</p>

<p>First, the dependency's Version field includes all properties defined in the project that end with .version, eg. ${spring.version} as suggested in the <a href="http://www.sonatype.com/books/maven-book/reference/optimizing-sect-dependencies.html">Maven Book, Chapter 8.3</a>. </p>

<p><img src="http://www.codehaus.org/~mkleint/addCompletionExpressions.png"/></p>

<p>Second, I've created a new tab called "Open Projects" that lets the user pick from the list of currently opened projects and declare them as dependency of the current project.</p>

<p><img src="http://www.codehaus.org/~mkleint/addCompletionOpenProjects.png"/></p>

<p>Enjoy</p>

<p><br />
</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2009-03-09T15:46:48+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001766_nbm_maven_plugin_30_released.html">
<title>NBM Maven Plugin 3.0 released</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001766_nbm_maven_plugin_30_released.html</link>
<description><![CDATA[<p>I'm proud to announce new release of nbm-maven-plugin. The plugin<br />
helps with creation and building of NetBeans module projects and<br />
NetBeans platform based applications.</p>

<p>= New in this release =<br />
<ul><br />
<li>Support for full lifecycle of the NetBeans platform based applications.<br />
<li>Improved runtime dependency generation, now transitive with class<br />
usage checks.<br />
<li>Better repository content generation for NetBeans.org artifacts, now<br />
located at <a href="http://bits.netbeans.org/maven2">http://bits.netbeans.org/maven2</a> and contains NetBeans 6.5 binaries only.<br />
</ul></p>

<p>Please note that the 3.0 version is not compatible with previous 2.6.x<br />
releases or 2.7 alphas. Please read the <a href="http://mojo.codehaus.org/nbm-maven-plugin/2630upgrade.html">upgrade notes</a><br />
Complete list of <a href="http://jira.codehaus.org/secure/IssueNavigator.jspa?reset=true&pid=11293&fixfor=14603">issues fixed.</a></p>

<p>There are new archetypes released that work with this version of<br />
nbm-maven-plugin:<br />
org.codehaus.mojo.archetypes:nbm-archetype:1.1<br />
org.codehaus.mojo.archetypes:netbeans-platform-application-archetype:1.1</p>

<p>It tool a while to get the release out (too long), but now it's finally here. Please comment, file issues, send patches.. Thanks.<br />
</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2009-02-25T13:25:55+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001735_nb_65_artifacts_in_a_maven_repository.html">
<title>NB 6.5 artifacts in a Maven repository?</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001735_nb_65_artifacts_in_a_maven_repository.html</link>
<description><![CDATA[<p>If anyone wonders why the NetBeans 6.5 binaries still aren't at the Maven repository at <a href="http://deadlock.netbeans.org/maven2">deadlock.netbeans.org</a>, here is why.</p>

<p>The maven repository is primarily targeted to be used together with <a href="http://mojo.codehaus.org/nbm-maven-plugin">nbm-maven-plugin</a> that creates NetBeans module artifacts. Actually the repository itself is being automatically generated by one the goals of the plugin (<a href="http://mojo.codehaus.org/nbm-maven-plugin/populate-repository-mojo.html">populate-repository</a> goal).</p>

<p>There is a new major version of the plugin waiting for release. Among other things, like improved support for platform based development, this new version also reworked how the automatic generation of the repository with NetBeans artifacts works.<br />
<ul><br />
<li>It uploads both module jar files and the NBM files. These are crucial to some of the new features of the plugin</li><br />
<li>It consults a Nexus repository index to generate proper dependency metadata. For libraries not found in the index, a custom groupId+artifactId coordinates are created and the binaries (with metadata) are hosted at the same repository as the NetBeans modules. </li><br />
<li>A POM is generated for each of the IDE's clusters along with a list of modules in that cluster</li><br />
</ul></p>

<p>All these features (and especially the second entry) are in fact causing the repository content not to be backward compatible with the previous version. It could be probably used with the 2.6.x version of the plugin but it would behave differently than the content generated by that 2.6.x version.</p>

<p>One option is to have the deadlock repository dedicated to 2.6.x plugin and for 3.0.x and later, just use a different repository where new metadata gets created. I'm indeed currently in talks to find a new place for the NetBeans binary artifacts, so a new repository is to be expected for use by 3.0.x.<br />
However it will not solve the problem entirely, might make it worse actually. As there will be Maven POMs floating around the internet that shall describe the very same artifact, but the metadata contained within (eg. stated dependencies) will be different. If these meet in your local repository at the same time, you're in trouble and get non-reproducible and irrationally failing builds :(</p>

<p>Therefore the only sane solution I was capable of finding is to never generate the repository content for Netbeans 6.5 using 2.6.x version of the plugin and only make the 3.0.x version available.<br />
If you need the old bits generated, you are free to do so locally at your company/project using the very same maven goal I use for the public repository. </p>

<p>I will generate the content for the new repository as soon as I get hold of the new server and after I release the 3.0 version of the nbm-maven-plugin.</p>

<p>PS: As you might notice, I will not be generating NetBeans 6.0/6.1 content using the new 3.0.x plugin goal. Again to prevent a clash in the metadata..<br />
</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2008-12-09T07:54:05+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001732_mavenhudson_automation.html">
<title>Maven+Hudson automation</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001732_mavenhudson_automation.html</link>
<description><![CDATA[<p>Ever wanted to have the Continuous integration server results at your fingertips? And always just relevant to your current work? Automatically?</p>

<p>Jesse Glick has posted a new version of the <a href="http://hudson.gotdns.com/wiki/display/HUDSON/NetBeansPlugin">Hudson plugin</a> on NetBeans.org Plugin Portal. It includes integration of <a href="https://hudson.dev.java.net/issues/show_bug.cgi?id=1643">issue 1643</a> which takes the Hudson server and job definition right from the Maven's POM file. <br />
If you define the &lt;ciManagement&gt; section in your pom.xml and it's Hudson you point at, the <br />
Hudson integration will pick up the correct URL(s) from the opened projects and automatically contact those servers. The jobs from the URLs will be considered a priority and shown in status bar if broken. Once you close the relevant projects, the Hudson support disconnects again and will stop notifying you.<br />
<img src="http://codehaus.org/~mkleint/projecthudson.png"/></p>

<p>To download the hudson module(s) binaries, follow these links.<br />
<a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=2178">Hudson module</a> and <a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=14421">Hudson Maven bridge</a></p>

<p>For NetBeans Module developers: It shall be fairly easy to write bridges for other NetBeans project types as well, feel free to contact me if you want to give it a try.<br />
</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2008-11-26T15:01:55+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001704_maven_pom_inheritance_view.html">
<title>Maven POM inheritance view</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001704_maven_pom_inheritance_view.html</link>
<description><![CDATA[<p>There's a new update of Maven support (version 3.1.2) on NetBeans stable update center since yesterday. You are encouraged to upgrade as it fixes a few critical issues found in the integration and the Maven embedder that is used. One pom.xml editing enhancement is added.</p>

<p>When editing your pom.xml file, you get the regular xml file navigation panel. That one is provided for any xml file. it shows you the structure of the currently edited xml file in a tree.<img src="http://www.codehaus.org/~mkleint/xmlview.png"/></p>

<p>The newly added navigator panel will show you the inheritance of your current pom file. That means the artifactId + version of the current file, it's parent POM's artifactId + version and so on, all the way back to the root company or project POM. it will also denote if the parent is accessible in the sources or is being retrieved from the repository. That happens when your project is using an already released version of the parent pom and is not depending on the current version in the sources or when the source is not accessible for some other reason. The editable parent POMs can be quickly opened by double clicking on the node.<br />
<img src="http://www.codehaus.org/~mkleint/POMinheritanceview.png"/></p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2008-05-28T12:18:32+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001679_writing_groovy_maven_plugins_in_netbeans.html">
<title>Writing Groovy Maven plugins in NetBeans</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001679_writing_groovy_maven_plugins_in_netbeans.html</link>
<description><![CDATA[<p>When updating the <a href="http://mojo.codehaus.org">mojo.codehaus.org</a> svn repository, I noticed there's a new maven plugin in the sandbox with a cool name: "IANAL Maven Plugin" . I've opened the project in NetBeans to see what the plugin does. However the plugin seems to be written in <a href="http://mojo.codehaus.org/groovy/">Groovy</a>, not Java. So I installed the latest <a href="http://martin.adamek.sk/?p=13">Groovy support</a> in NetBeans from the update center. To get the right editor colorings and everything. And also to figure if it works with Maven based projects. It  worked. Sort of. I got a few red underlines meaning the classpath was not right. An email exchange with the Groovy support devs confirmed my own thoughts that the problem is in the fact that groovy sources are in src/main/groovy folder in Maven projects and this folder is missing on project's sourcepath. So I <a href="http://fisheye.codehaus.org/changelog/mevenide/?cs=5200">added</a> it.<br />
The results is here <a href="http://codehaus.org/~mkleint/groovy-maven.png"> <img src="http://codehaus.org/~mkleint/groovy-maven-thumb.png"/></a>. No red lines in the editor, ready for coding. There's still room for improvement though. Ideally the Groovy sources would appear in a separate Source node under the project's node. Please note that it will only work in the upcoming 3.1 version of Maven support. Coming soon.</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2008-04-25T10:26:31+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001675_netbeans_included_in_new_mandriva_20081_.html">
<title>NetBeans included in new Mandriva 2008.1 </title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001675_netbeans_included_in_new_mandriva_20081_.html</link>
<description><![CDATA[<p>I've just finished installing the new Powerpack of <a href="http://mandriva.com/en/product/mandriva-linux-powerpack">Mandriva 2008.1 Spring</a> linux distribution. When I browsed the available software I discovered this little gem. </p>

<p><img src="http://codehaus.org/~mkleint/mandriva-netbeans.png"/></p>

<p>I couldn't resist installing it even though it's only 6.0 and as a NetBeans IDE developer I'm using the latest daily builds mostly. For my daily work as least, sometimes I need to test on older versions though.</p>

<p>Maven also comes prepackaged but it was even older. 2.0.4 I think, I'll rather stick to the latest 2.0.9 release.</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2008-04-18T09:54:56+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001673_remote_maven_repositories_at_your_fingertips.html">
<title>Remote Maven repositories at your fingertips</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001673_remote_maven_repositories_at_your_fingertips.html</link>
<description><![CDATA[<p>It's great to see that many public Maven2 remote repositories are providing the index of the repository now. I've just figured <a href="http://download.terracotta.org/maven2/">Terracotta.org</a> has used the the <a href="http://docs.codehaus.org/display/M2ECLIPSE/Nexus+Indexer">Nexus command line tool</a> to create such index. Of course I have my own selfish reasons to be happy about it. </p>

<p>The 3.1 (coming soon) version of <a href="http://mevenide.codehaus.org/m2-site">Maven integration for NetBeans</a> is using these indexes to greatly enhance the user experience within the IDE.  Let's preview some of the places that benefit from the indexing data.</p>

<p>First we need to add the Terracotta.org repository to the list of known repositories.<br />
<img src="http://codehaus.org/~mkleint/addresository.png"/><br />
That's done in the  Maven Repositories top level window. You can open it from Windows menu.</p>

<p>To verify we added the correct thing, let's expand the root node of the new repository and see what content we have there.<br />
<img src="http://codehaus.org/~mkleint/browserepository.png"/><br />
You can easily drill down from groupIds to artifactIds to versions. There you can immediately add the artifact to your projects or (if the metadata is present) view project website, file a bug or checkout the sources.</p>

<p>Browsing is cool but it gets boring after a while. The true integration puts the metadata from the index right at your fingertips when you need it.</p>

<p>For example when creating a new project from archetype<br />
<img src="http://codehaus.org/~mkleint/createarchetype.png"/></p>

<p>or in the editor for your poject's POM file when you need to check what dependencies or maven plugins are available and in what versions.<br />
<img src="http://codehaus.org/~mkleint/completion.png"/></p>

<p>The new 3.1 version of Mevenide is not 100% ready for release, however if you want to test drive the beta quality code, it's fairly easy to setup. Download the <a href="http://deadlock.netbeans.org/hudson/job/mevenide/lastSuccessfulBuild/artifact/mevenide-AU-SNAPSHOT.zip">latest NBM binaries</a> from the NetBeans.org <a href="http://deadlock.netbeans.org/hudson/job/mevenide">continuous integration machine</a> and install them through the Tools/Plugins dialog. And while you are in testing mode, you should check it in the <a href="http://download.netbeans.org/netbeans/6.1/beta/">NetBeans 6.1 Beta build </a></p>

<p>Enjoy</p>

<p>Milos<br />
</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2008-04-08T19:41:04+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001672_i18n_hyperlinking_for_netbeans_modules.html">
<title>I18N hyperlinking for NetBeans modules</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001672_i18n_hyperlinking_for_netbeans_modules.html</link>
<description><![CDATA[<p>It's a good practice to have your code internationalized. The coding pattern for doing so in NetBeans modules is following:</p>

<pre>
org.openide.util.NbBundle.getMessage(FindResultsPanel.class, "FindResultsPanel.btnModify.text")
</pre>

<p>Here the FindResultsPanel is the class where the text is used, The Bundle.properties file resides in the same package as the class and the getMessage method makes sure it loads properly in an efficient manner. If you are coding a NetBeans module, you should avoid calling <code>java.util.ResourceBundle
</code>
 directly.</p>

<p>However it's been always a pain to edit the text. First you ned to find the I18N token, then find and open the relevant Bundle.properties file and then find the line with the I18N token. The pain has become unbearable for me and I created a simple module that's capable of "hyperlinking" to the correct location in the correct resource bundle file directly from the java source file. <br />
<img src="http://codehaus.org/~mkleint/hyperlink.png"><br />
The hyperlink is invoked by pressing Ctrl while pointing to the I18N string. If you wait a bit, a tooltip shows with the actual message text from bundle file.</p>

<p>The module NBM file can be downloaded from <a href="http://codehaus.org/~mkleint/apisupport-editor-3.1-SNAPSHOT.nbm">here</a>.<br />
Works in Netbeans module projects only (both Ant and Maven based)<br />
It will eventually make it either into the <a href="http://mevenide.codehaus.org/m2-site">Maven support</a> or the NetBeans <a href="http://apisupport.netbeans.org/"> module development modules</a></p>

<p>Enjoy.<br />
</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2008-03-31T08:36:28+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001639_maven_11_support_now_also_for_upcoming_netbeans_60.html">
<title>Maven 1.1 support now also for upcoming NetBeans 6.0</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001639_maven_11_support_now_also_for_upcoming_netbeans_60.html</link>
<description><![CDATA[<p>Eric Hartmann of the <a href="http://mevenide.codehaus.org">Mevenide team</a> announced</a> yesterday that a <a href="http://archive.mevenide.codehaus.org/user/3e8ca1b70711252336k79793297gacc98a098fea2079%40mail.gmail.com">new version of Maven 1.1 support</a> in NetBeans was just released. This is a maintainance release that allows people to migrate from NetBeans 5.5 to 6.0 if they still work with Maven 1.x.  Of course everyone can use both Maven 1.x  and Maven 2.x support (that's the one available on the default Update Center) at the same time.</p>

<p>Good job, Eric!</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2007-11-26T20:41:21+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001614_does_this_make_a_useful_feature.html">
<title>Does this make a useful feature?</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001614_does_this_make_a_useful_feature.html</link>
<description><![CDATA[<p>Got any idea for a new feature today that sounds cool and useful now but I'm not sure if it's really so, please advise.</p>

<p>A bit of background:<br />
The upcoming <a href="http://bits.netbeans.org/netbeans/6_0/milestones/latest/">NetBeans 6.0</a> has file templates based on <a href="http://freemarker.org/">FreeMarker</a> template engine. Most templates include license header. Each project can specify the license it's using and new files created in that project include the correct license then. For Apache Ant based projects, the magic property is "project.license=foo" in nbproject/project.properties file where "foo" is the name of the license template in Tools/Templates dialog. <br />
For Maven projects I'm looking for "netbeans.hint.license" property in the pom.xml file. As a nifty easter egg, if you happen to be using Apache 2.0 license and have the "licences.license.url" xml element filled in correctly with "http://www.apache.org/licenses/LICENSE-2.0.txt" value you get the correct header automatically. (Note: If you are using some other OSS license and want that feature as well, send me the url and header content and I'll add it to the list of licenses that ship with Maven support)</p>

<p>Now we are getting close to my today's idea. The <a href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache license</a> header includes the copyright notice, eg. Copyright [yyyy] [name of copyright owner]. Right now the name of copyright owner is replaced by the username in the resulting new file, however it would be nice if one could specify something more fancy. Like ${pom.organization.name} which would extract the data directly from the pom. With this syntax the Maven project type could make the whole POM available for new file templating. But I'm wondering if that's actually useful. What part of the POM can be used for templating? Please comment.</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2007-09-05T20:27:30+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001611_comparing_projects_the_ohloh_way.html">
<title>Comparing projects the Ohloh way</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001611_comparing_projects_the_ohloh_way.html</link>
<description><![CDATA[<p>I've fallen in love in <a href="http://www.ohloh.net">Ohloh</a>. Not only makes it a cool "<a href="http://www.ohloh.net/accounts/1531"> coding experience</a>" bullet in your resume, but also gives you interesting information about projects. Like the <a href="http://www.ohloh.net/projects/3517/analyses/latest/contributors">most active contributors</a>, <a href="http://www.ohloh.net/projects/3499/analyses/latest">individual file licenses</a> or <a href="http://www.ohloh.net/accounts/1531/stacks/default/accounts">people with similar software stacks</a> to yours.</p>

<p>Just lately I've found out a new, cool feature was added. You can compare projects in terms of codebase. Obviously it doesn't make sense for any 2 random projects but sometimes it reveals interesting information. Like this Ant vs. Maven2 <a href="http://www.ohloh.net/projects/compare?metric=Codebase&project_0=Apache+Ant&project_1=Maven+2">duel</a>.<br />
It shows (at least to me, please comment) that each tool is in different phase of development. In terms of codebase, activity and number of contributors as well. I'm not sure if the 200+ vs.140+ stack counts reflect a real world usage share though. We'll probably see more reliable results once the number of people joining the site grows.<br />
Too bad one cannot compare Netbeans and Eclipse codebase the same way. The different philosophy behind the projects is reflected even here at ohloh. While <a href="http://www.ohloh.net/projects/3517?p=NetBeans+IDE">NetBeans</a> has one entry, <a href="http://www.ohloh.net/projects/search?q=eclipse&x=0&y=0">Eclipse</a> is split into many ohloh project definitions.</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2007-08-29T20:04:32+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001603_spice_up_netbeans_ant_projects_with_maven.html">
<title>Spice up NetBeans Ant projects with Maven</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001603_spice_up_netbeans_ant_projects_with_maven.html</link>
<description><![CDATA[<p>I've been asked many times about using Maven dependency management within NetBeans' ant projects. I've usually just simply pointed to the <a href="http://maven.apache.org/ant-tasks.html">Maven Ant tasks</a> page. As a result of recent email conversation I had, I've actually tried to setup a sample project myself. <br />
With help of this <a href="http://wiki.netbeans.org/wiki/view/FaqIvy">NetBeans wiki page on Ivy</a> it turned out to be fairly simple indeed. And while I was at it, I've added a <a href="http://wiki.netbeans.org/wiki/view/FaqMavenAntTasks">new FAQ page</a> to NetBeans wiki. It's a step-by-step tutorial with sample project attached. Enjoy!</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2007-07-19T08:47:46+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001452_qqq_questionable_quiz_question.html">
<title>QQQ: Questionable Quiz Question</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001452_qqq_questionable_quiz_question.html</link>
<description><![CDATA[<p>The <a href="http://www.netbeans.org/competition/bday-quiz/contributed-quiz.html">NetBeans community quit</a> has been <a href="http://blogs.sun.com/seapegasus/entry/and_another_quiz">announced.</a> Question number 4 caught my eyes. <b>Which big change was made in the project build process from NetBeans 3.6 to later versions?</b> Mevenide is one of the answers there. You might first go for the obvious one - "it switched to Ant".<br />
But consider this: We've done 4 releases between 3.6 and 4.0. (<a href="http://blogs.codehaus.org/archives/000792_mevenide_netbeans_01_released.html">0.1</a> in July 2004, <a href="http://blogs.codehaus.org/archives/000816_mevenide_netbeans_02_released.html">0.2</a> in August, <a href="http://blogs.codehaus.org/archives/000845_mevenide_03_for_netbeans_40_beta2.html">0.3</a> in October and <a href="http://blogs.codehaus.org/archives/000897_mevenide_for_netbeans_04.html">0.4</a> in November 2004).  In 4.0 the NetBeans project system became free. And Mevenide is the proof of that. Isn't that the biggest change in 4.0?</p>

<p>Don't vote for t-shirt, vote for the truth! Choose 4C.</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2006-11-23T20:14:10+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001436_mevenide_testimonials_anyone.html">
<title>mevenide testimonials anyone?</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001436_mevenide_testimonials_anyone.html</link>
<description><![CDATA[<p>Have you ever used the <a href="http://mevenide.codehaus.org/m2-site">Maven 2 support</a> for <a href="http://www.netbeans.org">NetBeans IDE</a>?<br />
Do you have something to say about it and don't mind being quoted on the project's website? <br />
Then please send me your comments to "mkleint at codehaus dot org" and I'll add it to the "to-be-created" testimonals page. </p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2006-11-13T14:35:10+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001426_mevenide2_hotfix_release_for_nb_55.html">
<title>Mevenide2: hotfix release for Nb 5.5</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001426_mevenide2_hotfix_release_for_nb_55.html</link>
<description><![CDATA[<p>Traditionally, a few serious bugs made it into the mevenide release from last week. <br />
Also traditionally, a hotfix release ready and up on the update site.</p>

<p><a href="http://jira.codehaus.org/browse/MEVENIDE-465">MEVENIDE-465</a>  	 activating profile on build execution has no effect   	 <br />
<a href="http://jira.codehaus.org/browse/MEVENIDE-452">MEVENIDE-452</a> 	java.lang.AbstractMethodError: org.codehaus.mevenide.netbeans.j2ee.ejb.EjbJarImpl.getMetadataUnit() 	<br />
<a href="http://jira.codehaus.org/browse/MEVENIDE-463">MEVENIDE-463</a> 	Run & Debug outruns build<br />
<a href="http://jira.codehaus.org/browse/MEVENIDE-467">MEVENIDE-467</a> 	remove any webservices related templates, as they don't work<br />
<a href="http://jira.codehaus.org/browse/MEVENIDE-466">MEVENIDE-466</a> 	NPE in HyperlinkProviderImpl</p>

<p>Code completion in POM or profiles.xml files is limited in 5.5 due to this Netbeans bug - <a href="http://www.netbeans.org/issues/show_bug.cgi?id=87177">87177</a></p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2006-11-02T20:54:53+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001423_one_year_birthday_of_mevenide2.html">
<title>One year birthday of Mevenide2</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001423_one_year_birthday_of_mevenide2.html</link>
<description><![CDATA[<p>Everyone seems to celebrating birthdays nowadays. <a href="http://www.netbeans.org/community/articles/birthday.html">Netbeans</a>, <a href="http://www.eclipse.org/org/press-release/20061025cb_eclipsebirthday5.php">Eclipse</a>, <a href="http://jroller.com/page/eu?entry=mylar_has_turned_one">Mylar</a>, so why not <a href="http://mevenide.codehaus.org/m2-site">Mevenide</a>? </p>

<p>Everyone is counting differently, so I decided to go by first commit. And <a href="http://fisheye.codehaus.org/changelog/mevenide/trunk/mevenide2?cs=3508">here</a> it is. Turns out I missed the birthday by 2 days. But anyway, after one year, 500 commits, 50k of sources and 4 releases, check out for yourself where we are <a href="http://mevenide.codehaus.org/m2-site/">now</a>. </p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2006-11-01T09:33:29+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001368_hyperlinks_in_maven_poms.html">
<title>Hyperlinks in Maven POMs</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001368_hyperlinks_in_maven_poms.html</link>
<description><![CDATA[<p>The Maven POM file contains a lot of useful information but it's not always ready at hand. While browsing some pom.xml file and copy-pasting the url contained there, I  thought there must be a better way. Why not have the URLs hyperlinked? I knew Netbeans has APIs for hyperlinking documents, took me a bit of tweaking and looking into other people's code (the netbeans.org cvs repository proved handy here. Thank you Struts support.) and here is the result.<br />
<br><br />
<img src="http://www.codehaus.org/~mkleint/hyperlink-1.png"/><br />
Pressing Ctrl with a cursor over http/https url, shows a hyperlink which opens a new browser window or tab with the specified url.<br />
<br><br />
<img src="http://www.codehaus.org/~mkleint/hyperlink-2.png"/><br />
The modules section of the pom can also turned into hyperlinks. Triggering that one causes the module's pom to be opened in the editor.<br />
<br><br />
<img src="http://www.codehaus.org/~mkleint/hyperlink-3.png"/><br />
And it actually works also with plugin configurations as well. Opened the file referenced from the pom.<br />
<br><br />
Any other places where hyperlinks could be useful in the POM?</p>

<p>PS: the features above will appear in the next version of <a href="http://docs.codehaus.org/display/MEVENIDE/MevenideNetbeans2.0">mevenide2 for netbeans</a>.</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2006-06-26T07:05:09+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001367_yet_another_way_of_working_with_gwt_in_netbeans.html">
<title>Yet another way of working with GWT in Netbeans</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001367_yet_another_way_of_working_with_gwt_in_netbeans.html</link>
<description><![CDATA[<p>A few days ago, articles on use of GWT within Netbeans appeared on <a href="http://www.planetnetbeans.org">planetnetbeans.org</a>. That reminded me of an <a href="http://www.onjava.com/lpt/a/6611">article</a> by Robert Cooper on ONJava.com site I have read 2 weeks ago. Robert shows how to work with  the Google Web Toolkit using Maven. (Maven1 to be exact) So after installing the Maven support from <a href="http://mevenide.codehaus.org/download.html">Mevenide</a> into Netbeans and installing Robert's GWT Maven plugin, one should be able to easily build, run  and debug your GWT application as well.</p>

<p><a href="http://blogs.sun.com/roller/page/xzajo?entry=netbeans_met_gwt_and_more">Here</a> and <a href="http://blogs.sun.com/roller/page/roumen?entry=netbeans_and_gwt">here</a> are the blog entries from planetnetbeans.org</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2006-06-16T12:24:13+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001352_whats_new_netbeans_maven2_integration.html">
<title>What&apos;s new Netbeans Maven2 integration?</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001352_whats_new_netbeans_maven2_integration.html</link>
<description><![CDATA[<p>After re-reading the official <a href="http://blogs.codehaus.org/archives/001351_mevenide_maven2_netbeans_release_21.html">release announcement</a> I figured I forgot to include what's new in this version. Additionally I can go in more detail here than in the release info.<br />
<ul><br />
<li>The biggest change since 2.0.1 is probably under the hood. The maven embedder was rewritten and building with mevenide is now exactly the same as on the command line. Gone are the problems with multiproject builds etc. Thanks goes to Jason for the rewrite.<br />
<li>The eyecandy is probably the graph of project dependencies. Transitive dependencies and easy to discover, each scope (runtime/provider/compile/test) has it's own color, the initial automatic layout is not ideal but good enough, additionally allowing you to relayout and save the changes. For screenshots see my <a href="http://blogs.codehaus.org/people/mkleint/archives/001330_diagrams_for_everyone_ii.html">previous blog entry</a><br />
<li>The project loading got optimized, now it's faster and more reliable. It never downloads it's dependencies up front. (Obviously it needs to for building, but you don't want to download dependencies of 40 projects on IDE start)<br />
<li>It's possible now to execute arbitrary goals on projects and IDE action have some default mappings. Technically it's possible to map the right goals to you "Build project" or "Run project" actions, but for now there is no UI for customizing this behaviour. To be done for next release I guess.<br />
<li>You can customize some of the maven2 user settings in the Tools/Options dialog now.<br />
<li>And of course many bugs were fixed. But of course there can and probably are more. If you find some, please file them in the <a href="http://jira.codehaus.org/browse/MEVENIDE">bug tracking system</a>.<br />
</ul></p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2006-04-21T10:40:09+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001341_dont_create_just_open.html">
<title>Don&apos;t create, just open</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001341_dont_create_just_open.html</link>
<description><![CDATA[<p>It's interesting how easy is for a cool feature to become a usability problem. <br />
For both <a href="http://mevenide.codehaus.org/mevenide-netbeans-project/features.html">Maven1</a> and <a href="http://docs.codehaus.org/display/MEVENIDE/MevenideNetbeans2.0">Maven2</a> integrations for Netbeans, the Maven's POM file (<a href="http://maven.apache.org/what-is-maven.html">project object model</a>) is the ultimate source of project related information in the IDE. A nice demoable side-effect of it is that you don't need to create a netbeans project or somehow import and setup the IDE. The project will be recoginized and opened. Done. Start working. And that's for any Maven project out there.</p>

<p> And there lies the usability problem apparently. I get questions quite frequently about how to setup the IDE and that there's no "Create Maven project with existing sources" item in the Create project wizard. I can definitely see the logic here. There's a "Create Project with existing Ant script" in the UI. If you have an existing Ant based project with custom build.xml, then the IDE needs some additional information about your dependencies, source roots etc. But for Maven there is basically everything included in the POM. </p>

<p>But I'm quite seriously considering to add an entry "Create maven project with existing POM" wizard, just to fullfill the expectations of the users and not to give the bad first impression. But isn't that cheating to just open the project then?</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2006-03-20T14:51:49+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001330_diagrams_for_everyone_ii.html">
<title>Diagrams for Everyone II</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001330_diagrams_for_everyone_ii.html</link>
<description><![CDATA[<p>Last week I <a href="http://blogs.codehaus.org/people/mkleint/archives/001323_diagrams_for_everyone.html">discovered</a> the <a href="http://graph.netbeans.org">netbeans graph library</a>. It seems quite flexible so far. For mevenide2 I managed to create a nice <a href="http://www.codehaus.org/~mkleint/graphing2.png">transitive dependencies graph.</a> </p>

<p>Things I had to do:</p>

<p>I have changed the node renderer to visually distinguish different scopes (compile/test/runtime/..).</p>

<p>I've overriden the link renderer to draw thick lines from the project's artifact. That way it should be more obvious what are the direct dependencies.</p>

<p>When a node is selected by user, it's dependencies are also selected. Again a nice visual indication of interdependencies, plus helps when moving nodes around.</p>

<p>I've implemented my own graph node layouter, because the default didn't scale for big numbers of dependencies and was a bit chaotic for projects with interdependent dependencies. The current one attempts to cluster the related dependencies together. As can be seen in the <a href="http://www.codehaus.org/~mkleint/graphing2.png">picture</a>, the netbeans deps are separated from the maven dependencies visually.</p>

<p>Implementing layout persistece is supported by the graph library, so when you relayout the graph, it's not lost the next time you open it..</p>

<p>All and together, quite good results for the few hours I spent on the feature. The hardest part was coming up with the layouting algorithm.</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2006-02-20T08:24:16+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001323_diagrams_for_everyone.html">
<title>Diagrams for everyone</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001323_diagrams_for_everyone.html</link>
<description><![CDATA[<p>Even though I'm not a J2ME developer, I've always liked the screenshots of Netbeans Mobile Edition. They have these <a href="http://www.netbeans.org/images/screenshots/mobility/5.0/mp50-splashscreen.png">cool looking diagrams everywhere</a>. Yesterday I've figured their library for diagram creation is <a href="http://graph.netbeans.org/">free to use for everyone</a>. After a day of hacking I have some cool looking diagram in the <a href="http://docs.codehaus.org/display/MEVENIDE/MevenideNetbeans2.0">Maven2 support</a> as well. For starters I've implemented diagram for displaying the <a href="http://www.codehaus.org/~mkleint/modulegraph.png">module structure of a Maven2 multiproject</a>. Works quite well, but obviously I'm not good at creating graphics :) Now I have to start thinking about other places in Mevenide that could make use of some diagrams. Any ideas?</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2006-02-12T11:47:42+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001322_maven2_repository_containing_netbeans_apis_up_and_running.html">
<title>Maven2 repository containing Netbeans APIs up and running</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001322_maven2_repository_containing_netbeans_apis_up_and_running.html</link>
<description><![CDATA[<p>For those creating netbeans modules using Maven (most probably with the <a href="http://mevenide.codehaus.org/m2-site/maven-nbm-plugin">maven-nbm-plugin</a>) the biggest problem always was to populate the local repository with Netbeans API modules. Not anymore, thanks to Charlie Hunt (Nb Evangelist) who provided the webspace, I managed to setup a remote repository for these artifacts. Here it is:<br />
<a href="http://208.44.201.216:18080/maven/">http://208.44.201.216:18080/maven/</a>. Not only does it host the artifacts, but also declares dependencies in the poms (you get transitivity in dependencies) and for some APIs it even contains javadoc artifacts. </p>

<p>With the <a href="http://docs.codehaus.org/display/MEVENIDE/MevenideNetbeans2.0">IDE integration</a>, you get the docs at your fingertips then.</p>

<p>Adding it to your pom is <a href="http://fisheye.codehaus.org/viewrep/mevenide/mevenide2/netbeans/pom.xml?r1=1.11&r2=1.10">simple</a>.</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2006-02-07T18:28:05+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001262_mevenide_at_javapolis_2005.html">
<title>Mevenide at Javapolis 2005</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001262_mevenide_at_javapolis_2005.html</link>
<description><![CDATA[<p>I'll be showing the <a href="http://mevenide.codehaus.org/mevenide-netbeans-project">Maven integration</a> in the Netbeans IDE live at Javapolis 2005 <a href="http://www.javapolis.com/confluence/pages/viewpage.action?pageId=15036">Plugin Bazaar</a>.  Both the Maven1 support (now almost feature complete) and Maven2 (quite fresh, first version to be released soon) will be on display. <br />
Be sure to come to see the integration in action, to learn what Maven is and how it could make your development easier, to tell me what would be cool to have in Mevenide or just to say hi.</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2005-12-05T07:33:41+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001139_preview_of_updates_in_netbeans_maven_support.html">
<title>preview of updates in netbeans maven support.</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001139_preview_of_updates_in_netbeans_maven_support.html</link>
<description><![CDATA[<p>A new release of Mevenide for Netbeans is almost out of the door (new version 0.8 to be released in one or two weeks time). There's a few new features included in the maven project visual representation, a picture is worth 1000 words here. </p>

<p><img alt="Mevenide for Netbeans 0.8 screenshot" src="http://www.codehaus.org/~mkleint/newfeatureson08.png"></p>

<p>Every Maven project got a new subnode that lists all the dependencies of the given project. It visually shows the type of dependency, if it's present locally, if it's overriden.<br />
You can view what other versions are available in the remote and local repositories, you can edit the dependencies, download the artifacts, check if javadoc and/or sources are available for dependencies etc.<br />
Another added subnode is the Project files one, which gives shortcut access to all the project files of a maven project, no matter where these are physically present.</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2005-07-31T17:13:16+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001050_popupfactory_gotchas.html">
<title>PopupFactory gotchas</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001050_popupfactory_gotchas.html</link>
<description><![CDATA[<p>I've spent some time figuring this out, hopefully will save time of people reading this. <br />
PopupFactory creates instances of Popup that one can show/hide in their Swing application. Quick and easy, the <a href="http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/Popup.html">Popup javadoc</a> suggests it can cache the popups etc. Great! And it actually worked pretty well on my MacOSX. However when I tried the same piece of code on Linux, it didn't repaint. I showed the popup, but never repainted the content, was more a picture or screenshow than a live component. Well, that was quite troubling because the popup component consisted of multiple progress bars. (As part of my daily work at <a href="http://www.netbeans.org">Netbeans</a>, I'm currently working on the <a href="http://ui.netbeans.org/docs/ui/progress_indication/progress_indication_spec.html#pop_up_window_solution">Progress Indication component</a>)</p>

<p>After endless hours and hints from coworkers, I figured that the problem was cause by a <b>visible glasspane</b> which was painting the wait cursor. Funny enough the visibility of the wait cursor correlates with the visibility of the progress bar in my case.  Ensuring the glasspane stays invisible is hard to achieve. And it did work on Mac. The reason for that is that Apple's JDK enforces heavyweight popup. Oh, I didn't tell you that yet. <br />
There are internally 3 kinds of popups, lightweight, mediumweight and heavyweight. On Linux I was consistently getting mediumweight popup, while on Mac the heavy version.<br />
So how to force a heavyweight popup? The answer is non-obvious, I figured by looking at the code. In <a href="http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/PopupFactory.html">PopupFactory's createPopup()</a> method don't specify the owner parameter. Passing null will magically create a heavyweight popup and everything starts working.</p>

<p>Hope that helps.</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2005-04-21T08:00:10+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001048_daily_routine_at_netbeans_prague_office.html">
<title>Daily routine at Netbeans Prague office</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001048_daily_routine_at_netbeans_prague_office.html</link>
<description><![CDATA[<p>Check out the <a href="http://blogs.sun.com/roller/page/roumen/20050414#who_stole_my_bottle">epic saga</a> of a lost PET bottle at Prague Sun site. (or was it stolen/abducted ?)</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2005-04-16T19:54:45+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001027_mavens_hidden_dragon.html">
<title>Maven&apos;s Hidden Dragon</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001027_mavens_hidden_dragon.html</link>
<description><![CDATA[<p>A few days ago, I was <a href="http://blogs.codehaus.org/people/mkleint/archives/001024_maven_unused_features.html">blogging</a> about features that are part of Maven and it's javadoc plugin but are not used. Today I figured that the javadoc plugin has more suprises in the sleeves. It includes features that don't seem to be described anywhere on the <a href="http://maven.apache.org/reference/plugins/javadoc/index.html">maven-javadoc-plugin</a> site. </p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2005-04-03T21:10:16+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001024_maven_unused_features.html">
<title>Maven: Unused features</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001024_maven_unused_features.html</link>
<description><![CDATA[<p>While Maven provides a lot of features in various plugins, some of them seem not to be used at all. One example I've encountered lately is javadoc:upload. If you try  to <a href="http://www.google.com/search?hl=en&q=%2Bsite%3Aibiblio.org+javadoc+maven&btnG=Google+Search">google ibiblio.org's repository</a> for javadocs uploaded, you won't find *any*. Well, there a 2 or 3 examples of javadocs but these were not uploaded using the javadoc:upload goal apparently because they are in the wrong place. </p>

<p>Why do I write about it? Since <a href="http://mevenide.codehaus.org/mevenide-netbeans-project/">Mevenide</a> 0.3 (Netbeans version) I've looked up javadocs for project's dependencies in the local repository and made them available to the project. The IDE then can enhance the code completion for the classes of that dependency. Version 0.6 now allows to check the remote repository for the javadocs and downloads them if available. (<a href="http://mevenide.codehaus.org/mevenide-netbeans-project/images/screenshots/projectprops2.png">Screenshot here </a>) Unfortunately I've written the feature without consulting Google first.</p>

<p>Makes me wonder how many other Maven features end up being unused. Is it because there was no real benefit in uploading them or is the whole repository upload workflow not streamlined enough? Or even flawed?</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2005-04-01T08:25:00+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/001019_tutorial_on_creating_netbeans_modules_with_mevenide.html">
<title>Tutorial on creating Netbeans modules with Mevenide</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/001019_tutorial_on_creating_netbeans_modules_with_mevenide.html</link>
<description><![CDATA[<p>I've written a <a href="http://docs.codehaus.org/display/MEVENIDE/NetbeansModulesUsingMevenide">short tutorial</a> on  creating Netbeans modules (plugins) using Maven and Mevenide. After the initial steps of installing Maven and <a href="http://mevenide.codehaus.org/mevenide-netbeans-project">Mevenide</a>, the only trouble is declaring the correct dependencies (I would argue that's a general issue in software development). Building the module and it's NBM file is handled by the <a href="http://mevenide.codehaus.org/maven-nbm-plugin">maven-nbm-plugin</a>.</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2005-03-25T20:20:19+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/mkleint/archives/000862_those_ui_design_dilemmas.html">
<title>Those UI design dilemmas</title>
<link>http://blogs.codehaus.org/people/mkleint/archives/000862_those_ui_design_dilemmas.html</link>
<description><![CDATA[<p>Working on mevenide (integration of Maven and popular IDEs) for Netbeans is full of UI decisions that have major influence on the usability of the product. (well, just like in any app :)</p>

<p>1. complexity vs. simplicity<br />
How to let the users customize the project? Maven pros have different workflow from the newcomers. The UI support should scale. Exposing all the plugins' properties at once (and there's a *lot* of them) to a user who just wants to build his/her first hello world application is a no-no. So a real simple basic setup is a must, with some basic project templates that work out of the box. At the other end of the scale, allowing to edit the the pom file and all the properties files with appropriate help like completion etc satisfies the demanding users. However what about the average? Coding and designing UI for the average seems to be the hardest task. I haven't really figured that one yet.</p>

<p>2. general vs. specific<br />
The current default Netbeans 4.0 project types are all based on ant. However there's a whole bunch and every one of them is a bit different from the rest. So one has a project type for J2SE apps, web application project type, so called free-form which lets one map existing custom ant scripts into the IDE. With these specific project types one can have targeted UI and workflow for the tasks at hand.<br />
Given the nature of Maven and the limited resources at mevenide, it was decided (by me :) to go ahead with "one project type to bind them all". How will that work? I'm not really sure. The user can basically use *any* maven plugin to build their artifact. And what about deployment, debugging etc. Webapps are debugged differently from a Swing app. And the IDE offers different tools for it as well.</p>

<p>3. Maven vs. Netbeans<br />
This dilemma is best described with an example. Maven doesn't allow to build single file. I can understand why. But then again, Netbeans has this nice action in the popup menu - Compile File. For maven projects it's disabled because it's not implemented. From the user's perspective it looks unfinished or even broken. There's more cases like that: compilation executes tests, which is perfectly ok from maven point of view, but doesn't really match the user experience from other Netbeans project types. What to do here? I tend to be a maven purist "what maven does, is correct for the project type in the IDE as well", but I might just be blindfolded.</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>mkleint</dc:creator>
<dc:date>2004-10-15T13:38:53+00:00</dc:date>
</item>


</rdf:RDF>
