Maven

From APIDesign

(Difference between revisions)
Jump to: navigation, search
(Redirecting to wikipedia:Apache Maven)
m
Line 1: Line 1:
-
#REDIRECT [[wikipedia::Apache_Maven]]
+
[[wikipedia::Apache Maven|Apache's Maven]] is an advanced, high level concept build system. Compared to [[Ant]] or make, it feel like a modern programming language, compared to assembly. While the other build systems describe step by step, what shall be done and how, the [[Maven]] is build around automatic management of dependencies and configuration of various plugins. It is kind of [[module system]], in fact.
 +
 
 +
=== Is [[Maven]] ready for Desktop? ===
 +
 
 +
In work, while working on [[NetBeans]], I rely mostly on [[Ant]]. However for my Saturday night project, I decided to try [[Maven]]. It's management of dependencies is really awesome. I do not need to take care about locations of actual libraries, I can just spell their name and version and the [[Maven]] downloads them automatically during the build. Perfect, I love this part of the system.
 +
 
 +
On the other hand, compared to [[Ant]], I have huge problems to configure the system to do exactly what I want. For example, I want to package my application (two my own [[JAR]] files, plus all the dependency [[JAR]]s) into a single ZIP file that everyone could download. This is not easy at all. The only tool that does something similar seems to be ''shade'' plugin. But its functionality is still far from optimal.
 +
 
 +
It seems to me that development of simple [[Java]] desktop applications is not really well supported by current [[Maven]] plugins. Packaging to a compound ZIP is unsupported, execution of a main method is supported, but not by official [[Apache]]'s plugin. It seems to me that [[Java]] desktop is second class citizen in [[Maven]].
 +
 
 +
On the other hand one can find tons of tools for server side. Packaging to ''WAR'' file is possible (this is almost the ZIP file requested above, and I even wanted to create ''WAR'' instead of ''ZIP'', but it does not work, it requires some ''web.xml'' file, which I obviously don't have). Execution on glashfish, grizzly, etc. have their own plugins and thus are easy to start with.
 +
 
 +
All this leads to me following question: is [[Maven]] really ready for development of [[Java]] desktop applications?

Revision as of 19:18, 13 September 2009

Apache's Maven is an advanced, high level concept build system. Compared to Ant or make, it feel like a modern programming language, compared to assembly. While the other build systems describe step by step, what shall be done and how, the Maven is build around automatic management of dependencies and configuration of various plugins. It is kind of module system, in fact.

Is Maven ready for Desktop?

In work, while working on NetBeans, I rely mostly on Ant. However for my Saturday night project, I decided to try Maven. It's management of dependencies is really awesome. I do not need to take care about locations of actual libraries, I can just spell their name and version and the Maven downloads them automatically during the build. Perfect, I love this part of the system.

On the other hand, compared to Ant, I have huge problems to configure the system to do exactly what I want. For example, I want to package my application (two my own JAR files, plus all the dependency JARs) into a single ZIP file that everyone could download. This is not easy at all. The only tool that does something similar seems to be shade plugin. But its functionality is still far from optimal.

It seems to me that development of simple Java desktop applications is not really well supported by current Maven plugins. Packaging to a compound ZIP is unsupported, execution of a main method is supported, but not by official Apache's plugin. It seems to me that Java desktop is second class citizen in Maven.

On the other hand one can find tons of tools for server side. Packaging to WAR file is possible (this is almost the ZIP file requested above, and I even wanted to create WAR instead of ZIP, but it does not work, it requires some web.xml file, which I obviously don't have). Execution on glashfish, grizzly, etc. have their own plugins and thus are easy to start with.

All this leads to me following question: is Maven really ready for development of Java desktop applications?

Personal tools
buy