Hi everyone, So I have been working on my view of what JavaScript based web application development should be like with Maven, to that end I have created the JSZip set of projects. The first semi-ready piece of work from that set of projects is the JSZip Maven Plugin.
This is very early code, but it works... I just cannot and will not promise that the exact way it works in 0.1-alpha-1 will be the same as in 1.0 when I get to 1.0... however, the *functionality* should remain the same. The key differentiator of the JSZip Maven plugin is multi-module live development... i.e. 1. You start with a multi-module project with multiple java and javascript modules and a webapp. 2. At the root aggregator project, you start maven like so: mvn jszip:run 3. At the first cut this looks like jetty:run, except that it skips execution on modules which are not of packaging=war, so you can run at the aggregator root. 4. You fire up a browser and start testing your app 5. You find a problem, in your editor, fix the JavaScript file (it's in a different module from the war module) and save it 6. *First difference from jetty:run* Just hit reload in your browser [Note: no need for ^C, mvn clean install -DskipTests && mvn jetty:run -f webapp/pom.xml] 7. Oh dear you need a change to the backing java class (it's in a different module from the war module), make the change, 8. *Second difference from jetty:run* Tell your IDE to recompile the class, servlet restarts automatically [Note: no need for ^C, mvn clean install -DskipTests && mvn jetty:run -f webapp/pom.xml] 9. Oh dear, you know what I need to add a dependency to finish coding that java method 10. *Third difference from jetty:run* Add the dependency to the pom.xml, edit the java method using the new dependency, tell your IDE to compile the java class, dependency is downloaded automatically and added to the classpath and the servlet is restarted automatically. [Note: no need for ^C, mvn clean install -DskipTests && mvn jetty:run -f webapp/pom.xml] The dependencies can even come from the reactor *providing the reactor build order is maintained*. If the reactor build order is modified, we have to stop the process as there is only so much dynamic that can be supported. The next steps are: 1. Refactor the pile of hacks into something that can be: * used by others (i.e. let jetty:run and tomcat:run benefit from my tricks) * maintainable by me and others 2. Figure out the best way to handle modular javascript with Maven now that this plugin delivers a live-development experience This release is aimed at providing something that will enable others to help with the above two goals. Note: bugs, their reporting and fixing are going to be ignored until after steps 1&2 have been solved. Note 2: The intention is that at least the JSZip Maven Plugin and and shared components will be moved into the ASF incubator once the rough edges have been knocked off and a community has been built. Some components will necessarily have to remain outside, such as community packaging of GPL licensed JavaScript libraries where the maintainers of the JavaScript library are not interested in producing a JSZip module packaging of their library. Please join us at jszip-us...@googlegroups.com and/or jszip-...@googlegroups.com Thanks -Stephen --------------------------------------------------------------------- To unsubscribe, e-mail: general-unsubscr...@incubator.apache.org For additional commands, e-mail: general-h...@incubator.apache.org