Or let me rephrase that. In simple terms, I have dependency graphs like this:
A ----> B ----> C ^ | \------- D <----/ How do I put these classes into separate modules? On Jul 24, 2013, at 10:28 PM, Russell Gold <r...@gold-family.us> wrote: > > On Jul 24, 2013, at 8:36 PM, Ron Wheeler <rwhee...@artifact-software.com> > wrote: > >> >> On 24/07/2013 4:40 PM, Russell Gold wrote: >>> Oh, you underestimate the coupling of this code. Yes, there are packages, >>> but the classes in those packages reference one another willy-nilly. It's >>> not a problem with recompiling - it's that there don't appear to be any >>> good, sensible subset of classes in this group of 10,000 or so which can be >>> compiled on their own. This set of 4000 appears to be the minimum of what's >>> left. >>> >>> And worse, it appears that we published the main classes responsible for >>> doing the coupling - and our customers use them in their own scripts. >>> >> This does not mean that they require recompiling in a single Maven project. > > What am I missing? If I compile the classes I want, I get the others because > of compile dependencies. If I compile some of the others instead, I still get > them all. How do I not compile them in a single maven project? > > Essentially, there is a backbone of classes, all of which refer to a certain > few classes - and those few classes refer to all the rest. > > The comment about customers using them was just an explanation of why we > can't just refactor out the dependencies. The public classes are the ones > that contain the dependencies. > >> >>> The architect responsible for this mess left the company ten years ago, >>> shortly after putting it in place over the objections of most of the senior >>> staff, and we haven't been able to remove it. >>> >> You could start by breaking the whole mess into packages that live in a >> single project. >> If you get down to 80-100 Maven projects, you will at least have a start on >> a cleanup and a way to reduce the need to compile 4000 classes at once. > > We do use multiple projects. This blob (which is actually what we call it) > represents about half the system, and a third of those participate in the > tight coupling. Beyond that, we have about 100 separate project that are > currently in ant, and are due to convert. > >> >> Our biggest application was made up of 90 Maven projects but most major >> revisions only required changes to 10-20 Maven projects and we edited, >> compiled and tested each project individually even if it depended on other >> jars. >> We had designed it from the start as a layered stack so our initial >> packaging into Maven projects made sense but we did many refactoring over >> the years as we went through major revisions and changed our views about how >> to structure the application. >> >> Maven is designed to support multi-project applications. >> >> Ron >>> Russ >>> >>> On Jul 24, 2013, at 3:28 PM, Ron Wheeler <rwhee...@artifact-software.com >>> <mailto:rwhee...@artifact-software.com>> wrote: >>> >>>> On 24/07/2013 12:35 PM, Russell Gold wrote: >>>>> I wish I could break it up. Among the problems with this code is the >>>>> extreme bit of coupling. The scripts list 300 files to compile because >>>>> that's all that we would have wanted, but they pull in other files, which >>>>> pull in yet others. Trying to compile this fairly small subsystem winds >>>>> up building about a third of the entire project. >>>> Pulling in classes does not mean recompiling them. >>>> Once you have compiled the dependencies and aggregate them into jars, they >>>> can be referenced without recompiling them. >>>> This will speed things up tremendously. >>>> >>>> Do you at least have packages to use as a starting point? >>>> >>>> Ron >>>>> >>>>> But I will definitely look at the options and see what I can learn from >>>>> them; thanks for the suggestions. >>>>> >>>>> Russ >>>>> >>>>> On Jul 24, 2013, at 12:31 PM, Wayne Fay <wayne...@gmail.com >>>>> <mailto:wayne...@gmail.com>> wrote: >>>>> >>>>>>> The case I'm wondering about now is one where we have over 10,000 >>>>>>> source files in a directory, and compile them bit-by-bit. One step >>>>>>> specifies >>>>>>> about 300 files, and thanks to javac dependency logic, actually compiles >>>>>>> about 4000 files in ant. >>>>>> Is there any way you can break that into 10 projects with 1k files >>>>>> each, or 20 projects with 500 files each, etc? I have found dramatic >>>>>> improvements in (Java compiling) speed as a result of breaking huge >>>>>> projects like this into a series of much smaller projects with >>>>>> dependencies between the projects etc as needed. >>>>>> >>>>>> Having said that, 20 seconds for 4k files sounds pretty quick! Sorry >>>>>> but I'm not sure how to explain the 20 sec vs 90 sec results you're >>>>>> experiencing. I'd check versions of everything and flags sent to >>>>>> compilers etc via -X. >>>>>> >>>>>> Wayne >>>>>> >>>>>> --------------------------------------------------------------------- >>>>>> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org >>>>>> <mailto:users-unsubscr...@maven.apache.org> >>>>>> For additional commands, e-mail: users-h...@maven.apache.org >>>>>> <mailto:users-h...@maven.apache.org> >>>>>> >>>>> ----------------- >>>>> Come read my webnovel, Take a Lemon <http://www.takealemon.com>, >>>>> and listen to the Misfile radio play >>>>> <http://www.gold-family.us/audio/misfile.html>! >>>>> >>>>> >>>>> >>>>> >>>>> >>>> >>>> >>>> -- >>>> Ron Wheeler >>>> President >>>> Artifact Software Inc >>>> email: rwhee...@artifact-software.com >>>> <mailto:rwhee...@artifact-software.com> >>>> skype: ronaldmwheeler >>>> phone: 866-970-2435, ext 102 >>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org >>>> <mailto:users-unsubscr...@maven.apache.org> >>>> For additional commands, e-mail: users-h...@maven.apache.org >>>> <mailto:users-h...@maven.apache.org> >>>> >>> >>> ----------------- >>> Come read my webnovel,/Take a Lemon/<http://www.takealemon.com>, >>> and listen to the Misfile radio play >>> <http://www.gold-family.us/audio/misfile.html>! >>> >>> >>> >>> >> >> >> -- >> Ron Wheeler >> President >> Artifact Software Inc >> email: rwhee...@artifact-software.com >> skype: ronaldmwheeler >> phone: 866-970-2435, ext 102 >> > > ----------------- > Come read my webnovel, Take a Lemon <http://www.takealemon.com>, > and listen to the Misfile radio play > <http://www.gold-family.us/audio/misfile.html>! > > > > ----------------- Come read my webnovel, Take a Lemon <http://www.takealemon.com>, and listen to the Misfile radio play <http://www.gold-family.us/audio/misfile.html>!