Return-Path: X-Original-To: apmail-river-dev-archive@www.apache.org Delivered-To: apmail-river-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 38EF0108A0 for ; Wed, 30 Apr 2014 00:03:24 +0000 (UTC) Received: (qmail 78032 invoked by uid 500); 30 Apr 2014 00:03:23 -0000 Delivered-To: apmail-river-dev-archive@river.apache.org Received: (qmail 77919 invoked by uid 500); 30 Apr 2014 00:03:23 -0000 Mailing-List: contact dev-help@river.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@river.apache.org Delivered-To: mailing list dev@river.apache.org Received: (qmail 77901 invoked by uid 99); 30 Apr 2014 00:03:23 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 30 Apr 2014 00:03:23 +0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of dennis.reedy@gmail.com designates 209.85.213.41 as permitted sender) Received: from [209.85.213.41] (HELO mail-yh0-f41.google.com) (209.85.213.41) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 30 Apr 2014 00:03:17 +0000 Received: by mail-yh0-f41.google.com with SMTP id i57so980105yha.0 for ; Tue, 29 Apr 2014 17:02:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=ZVnaDA0vnXewTONVgcTyrOzK46gw1gW3UbW2bRFIhNg=; b=GaumTOOwXKMHkGJljctIpsDxft4dBDrHCcTFH9ErrFj3EXtQi0VKvGtsV955Wqeotl VBoUt52+OT8D5SmvpqMxVp/goWn2RgvU1eBExA0KJnFv3e9soeZOFJKwRSCp75r/ROxG Ads8cpsctUozyJCBus0B3p+/BugmnN1djkTnuasiLTUY3v0iulgHQKE/5Wp21c8vJmmg 2ZffvSBaLHnei1Z5MHpGn/WzebsMpPekEbxxxdDyyoW3D234q/cyQd2gELwLs47jYNsz PPzcw8e5k6x7M9S0TOET6S+PVq3q/34Iqh453g4N9VX5PJRWEaSGiNtLQ8kvpHigwphM A1fw== MIME-Version: 1.0 X-Received: by 10.236.42.43 with SMTP id i31mr1224123yhb.31.1398816177346; Tue, 29 Apr 2014 17:02:57 -0700 (PDT) Received: by 10.170.137.65 with HTTP; Tue, 29 Apr 2014 17:02:57 -0700 (PDT) Date: Tue, 29 Apr 2014 20:02:57 -0400 Message-ID: Subject: Modularization From: Dennis Reedy To: "dev@river.apache.org" Content-Type: multipart/alternative; boundary=20cf3010e5b15b77e304f8374589 X-Virus-Checked: Checked by ClamAV on apache.org --20cf3010e5b15b77e304f8374589 Content-Type: text/plain; charset=UTF-8 I've been working on creating a modular version of the project in the qa_refactor branch. The approach I've taken is to develop a Groovy script to load existing River jars, iterate through the contents of each jar, and copy sources to a multi-module project. The basic assumption with the multi-module project is that each module produces one jar. If you checkout qa_refactor, go to the modularize directory and run ModularizeRiver.groovy (you'll need groovy in your path). This will populate the source tree into the multi-module project, reading each jar for it's contents, placing PREFERRED.LIST and any META-INF/service files into their correct location for inclusion into respective jars. I've also taken care to not duplicate classes across modules. I've taken the initial approach to use Maven, and once the multi-module project is populated with source (using ModularizeRiver.groovy), you can cd into it and run mvn install to produce a release that is in the apache-river/dist/target/apache-river-3.0-SNAPSHOT directory. A this point I'm soliciting opinions and thoughts. Note that using Gradle is certainly an option here, the breakout into multi-modules is not tied to Maven, it's based on accepted conventions. I chose Maven because it was the quickest (for me) to get going. I've included *most* of the River platform and services. I haven't gotten around to others based simply on time. This is an experiment, it's located in skunk/qa_refactor, and may help us think a little more about what River The multi-module project might look like. I do want to note, that this currently fixes absolutely nothing. There is nothing wrong with the current River build. This simply offers a different way of structuring River, using a multi-module project, where each module reflects the basic architectural element of a distributed system. Regards Dennis --20cf3010e5b15b77e304f8374589--