Project development tools refresh

View: New views
2 Messages — Rating Filter:   Alert me  

Project development tools refresh

by manningr :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Developers,

Since the early days of SQuirreL in 2001, two tools have been used to
develop the code - namely Ant and CVS.  We are currently reviewing the
benefits that Maven2 and Subversion would afford this project and
wanted to give everyone an idea of what to expect in the coming
months.  I must admit that I was a doubter when I first began to use
Maven2 and Subversion at my day job over a year ago now.  But in the
time since then, I have gained an appreciation for both of them and
seen their adoption lead to great strides in improved productivity
through integration with other tools.  The key features that I see
SQuirreL benefiting from are:

Subversion:
 1. Ease of resource (file and directory) relocation without loss of
history (essential to help re-arrange our current source tree to
conform to Maven2 convention)
 2. Integration with Trac (project management) which is hosted on
SourceForge and to which we have already opted to use for our wiki.
 3. Ability to easily identify all files that were changed in a given changeset.

Maven:
 1. Dependency declaration: we can declare all of our dependencies in
one place (pom.xml file(s)) instead of in build.xml and the IDE (e.g.
.classpath in Eclipse), for all IDEs that support maven.
 2. Build Plugin Dependency bootstrapping: we can resolve dependencies
on build plugins (e.g. emma, findbugs, pmd) automatically.  This
eliminates the need for the developer to first download
special-purpose build task jars and place them in ANT_HOME/lib (for
example, findbugs Ant task jar).
 3. We can simplify the build scripts by taking advantage of Maven's
convention over configuration (for example - no need to state where
output directories and artifacts are placed).
 4. We can use maven plugins (like assembly, release, IzPack) to
eliminate the need for our special-purpose release ant build script
(build-weekly.xml)
 5. With the M2Eclipse plugin, importing projects into Eclipse is super-easy.
 6. We can create a project archetype that can be used to generate an
example plugin project that eases the setup burden on new developers
(i.e. no need to checkout the entire codebase, and no need to modify
other ant build scripts to build it)
 7. Maven can generate an alternate simple project website with links
to source code, javadocs, bug tracking, mailing lists, projects
reports (unit test, code coverage, findbugs, pmd, etc.)

Here is an outline of what I believe needs to happen in chronological order:

1. Get a fresh checkout from CVS, restructure code to conform to Maven
conventions, write pom files, and test build using Maven to ensure
equivalence with current Ant build.
2. Migrate from SourceForge CVS to SourceForge Subversion using
cvs2svn (http://cvs2svn.tigris.org/) - keep exactly what we have today
except hosted in Subversion; same project structure, still using Ant.
3. Checkout from Subversion and test Ant build scripts to ensure all
resources were migrated properly to Subversion.
4. Create tag in Subversion.
5. Restructure source files to conform to Maven2 hierarchical
structure (i.e. src/main/java/, src/main/resources, src/test/java,
etc.), just like what was done in step 1.
6. Place project poms from prototype (step 1) into fw, app and all
plugin modules.
7. Test build using Maven and commit changes. (At this point we are no
longer using CVS nor Ant).

I'd like to get feedback from developers - especially those with prior
experience migrating from Ant to Maven.  Let me know if you have
suggestions or concerns.  I'll update this thread periodically as
progress is made toward the final goal.

Rob

------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises
looking to deploy the next generation of Solaris that includes the latest
innovations from Sun and the OpenSource community. Download a copy and
enjoy capabilities such as Networking, Storage and Virtualization.
Go to: http://p.sf.net/sfu/opensolaris-get
_______________________________________________
Squirrel-sql-develop mailing list
Squirrel-sql-develop@...
https://lists.sourceforge.net/lists/listinfo/squirrel-sql-develop

Re: Project development tools refresh

by manningr :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Just a quick update on the progress that has been made so far.  I
created a new top-level folder
(which is temporary until we have converted to using maven) called -
unsurprisingly - "mavenize".
Here I am collecting scripts, poms and other files that will be used
to transform the build from
ant to maven.  This includes moving the src and tests withing each
module, creating the pom.xml
files and copying in supporting projects along with their poms.  So
far, I have everything being
built, and a first-cut at producing the installer.  There are still a
few items left to do before maven
is doing all that ant currently does for us: generating release
descriptor and update site, pushing
installer and source files up to SourceForge and pushing update files
to the alternate update site.

That's it for now.

Rob


On Wed, Jun 3, 2009 at 9:51 PM, Robert
Manning<robert.m.manning@...> wrote:

> Developers,
>
> Since the early days of SQuirreL in 2001, two tools have been used to
> develop the code - namely Ant and CVS.  We are currently reviewing the
> benefits that Maven2 and Subversion would afford this project and
> wanted to give everyone an idea of what to expect in the coming
> months.  I must admit that I was a doubter when I first began to use
> Maven2 and Subversion at my day job over a year ago now.  But in the
> time since then, I have gained an appreciation for both of them and
> seen their adoption lead to great strides in improved productivity
> through integration with other tools.  The key features that I see
> SQuirreL benefiting from are:
>
> Subversion:
>  1. Ease of resource (file and directory) relocation without loss of
> history (essential to help re-arrange our current source tree to
> conform to Maven2 convention)
>  2. Integration with Trac (project management) which is hosted on
> SourceForge and to which we have already opted to use for our wiki.
>  3. Ability to easily identify all files that were changed in a given changeset.
>
> Maven:
>  1. Dependency declaration: we can declare all of our dependencies in
> one place (pom.xml file(s)) instead of in build.xml and the IDE (e.g.
> .classpath in Eclipse), for all IDEs that support maven.
>  2. Build Plugin Dependency bootstrapping: we can resolve dependencies
> on build plugins (e.g. emma, findbugs, pmd) automatically.  This
> eliminates the need for the developer to first download
> special-purpose build task jars and place them in ANT_HOME/lib (for
> example, findbugs Ant task jar).
>  3. We can simplify the build scripts by taking advantage of Maven's
> convention over configuration (for example - no need to state where
> output directories and artifacts are placed).
>  4. We can use maven plugins (like assembly, release, IzPack) to
> eliminate the need for our special-purpose release ant build script
> (build-weekly.xml)
>  5. With the M2Eclipse plugin, importing projects into Eclipse is super-easy.
>  6. We can create a project archetype that can be used to generate an
> example plugin project that eases the setup burden on new developers
> (i.e. no need to checkout the entire codebase, and no need to modify
> other ant build scripts to build it)
>  7. Maven can generate an alternate simple project website with links
> to source code, javadocs, bug tracking, mailing lists, projects
> reports (unit test, code coverage, findbugs, pmd, etc.)
>
> Here is an outline of what I believe needs to happen in chronological order:
>
> 1. Get a fresh checkout from CVS, restructure code to conform to Maven
> conventions, write pom files, and test build using Maven to ensure
> equivalence with current Ant build.
> 2. Migrate from SourceForge CVS to SourceForge Subversion using
> cvs2svn (http://cvs2svn.tigris.org/) - keep exactly what we have today
> except hosted in Subversion; same project structure, still using Ant.
> 3. Checkout from Subversion and test Ant build scripts to ensure all
> resources were migrated properly to Subversion.
> 4. Create tag in Subversion.
> 5. Restructure source files to conform to Maven2 hierarchical
> structure (i.e. src/main/java/, src/main/resources, src/test/java,
> etc.), just like what was done in step 1.
> 6. Place project poms from prototype (step 1) into fw, app and all
> plugin modules.
> 7. Test build using Maven and commit changes. (At this point we are no
> longer using CVS nor Ant).
>
> I'd like to get feedback from developers - especially those with prior
> experience migrating from Ant to Maven.  Let me know if you have
> suggestions or concerns.  I'll update this thread periodically as
> progress is made toward the final goal.
>
> Rob
>

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Squirrel-sql-develop mailing list
Squirrel-sql-develop@...
https://lists.sourceforge.net/lists/listinfo/squirrel-sql-develop